平台:百度语音识别
环境:win7+python3
利用百度语音识别,由于百度限制了语音文件格式(pcm(不压缩)、wav(不压缩,pcm编码)、amr(压缩格式))和 8k/16k 采样率、16bit 位深、单声道,所以一遍需要先对语音文件做格式转换和语音文件分段处理。
一:格式转换
工具:ffmpeg
地址:http://ffmpeg.org/ffmpeg.html
本人安装静态版本,安装后,将文件先进行格式转换,代码如下:
def change_voiceformat(self,filepath):
#语音文件路径
file_name = filepath
# 调用系统命令,将文件转换成pcm格式
# self.pcm_path存放文件路径
change_voiceformat_command =f".\\ffmpeg\\bin\\ffmpeg -i {file_name} -acodec pcm_s16le -f s16le -ac 1 -ar 16000 {self.pcm_path}"
os.system(change_voiceformat_command)
二:语音文件分割
工具:speech-vad-demo
地址: https://github.com/Baidu-AIP/speech-vad-demo
集成 webrtc 开源项目,vad模块,具体算法GMM(Gaussian Mixture Model)。
由于百度rest api接口有60s的音频时长限制,使用此demo可以粗略地按照静音切分音频。
先下载后进行安装,在下载的文件夹里可以看到exe执行文件。
def devide_voice(self):
# 先将工作目录切换到.\speech-vad-demo才能执行vad-demo.exe
os.chdir(".\\speech-vad-demo\\")
# 直接执行.\vad-demo.exe,默认会将.\pcm\16k_1.pcm文件分段 切割并输出到.\output_pcm目录下
devide_voice_com =f".\\vad-demo.exe"
os.system(devide_voice_com)
# 切换回工作目录
os.chdir("..\\")