环境配置

ffmpeg运行环境

Windows10安装

官网地址:http://ffmpeg.org/download.html

å¨è¿éæå¥å¾çæè¿°

解压出来放到安装软件的盘符,添加环境变量即可 D:\ffmpeg-n4.4.1-2-gcc33e73618-win64-gpl-shared-4.4\bin

添加过程

找到你解压到的位置,复制文件路径

 win+R,输入指令

sysdm.cpl

选择高级,环境变量

 

 选择Path,点击编辑

 点击新建,复制刚才的路径,回车,关闭即可

验证是否安装完成

cmd输入

ffmpeg -version

出现如下界面则安装完成 

需要安装的第三方拓展库

wave
PyAudio        #这个如果安装失败,就去找源码文件,手动安装
time
baidu-api

 申请一个百度的语音识别API账号

百度智能云-智能时代基础设施

点击立即使用 

 领取免费资源,然后创建应用

 然后就会给你账号,密码,API接口号

 注意,免费资源是有时间的,有次数限制的,学习研究是没有问题,如果用于商业就需要自己花钱购买使用次数。百度维护和升级这些人工智能是需要大量费用的,免费资源是对学习者最大的帮助了。

源码(API自己申请,填自己的账号,我用Spyder编译器写的,pycharm那边没试过能不能跑通)

import wave
from pyaudio import PyAudio, paInt16
import time
from aip import AipSpeech#百度API配套包,装了baidu-api就有
import os#系统包

#录音参数设置
framerate = 16000  # 采样率
num_samples = 3000  # 采样点
channels = 1  # 声道
sampwidth = 2  # 采样宽度2bytes
FILEPATH = 'a.wave'         #文件保存路径
dur = 5            # 设置录音时间(秒)


#语音获取
def Acquisition():
    print("5s录音时间")
    pa = PyAudio()
    #打开一个新的音频stream
    stream = pa.open(format=paInt16, channels=channels,
                     rate=framerate, input=True, frames_per_buffer=num_samples)
    my_buf = [] #存放录音数据
 
    t = time.time()
    print('正在录音...')
 
    while time.time() < t + dur:  # 设置录音时间(秒)
    	#循环read,每次read 2000frames
        string_audio_data = stream.read(num_samples)
        my_buf.append(string_audio_data)
    print('录音结束.')
    save_wave_file(FILEPATH, my_buf)
    stream.close()
#录音文件写入
def save_wave_file(filepath, data):
    wf = wave.open(filepath, 'wb')
    wf.setnchannels(channels)
    wf.setsampwidth(sampwidth)
    wf.setframerate(framerate)
    wf.writeframes(b''.join(data))
    wf.close()



#识别模块
def Distinguish():
    #格式转化:文件路径修改,录音文件位置*.wave和格式转化后文件*.pcm的位置,请不要随意改变参数,除非你懂
        os.system('ffmpeg -y -i a.wave -acodec pcm_s16le -f s16le -ac 1 -ar 16000 a.pcm')

    #API账号填自己的账号
        APP_ID=' '
        API_KEY=' '
        SECRET_KEY=' '
    #客户信息
        client=AipSpeech(APP_ID,API_KEY,SECRET_KEY)

        with open('a.pcm','rb') as fp:
            au=fp.read()
        res=client.asr(au,'pcm',16000,{'dev_pid':1537})
        print('识别结果:'+"".join(res['result']))



if __name__ == '__main__':
    while True:
        #录音
        Acquisition()
        #识别录音
        Distinguish()
        

Logo

CSDN联合极客时间,共同打造面向开发者的精品内容学习社区,助力成长!

更多推荐