提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
百度语音识别与语音合成实现
前言
通过使用百度AI开放平台提供的语音技术API实现语音识别与语音合成,该方法能够在电脑及树莓派上均能很好的运行,采用python进行该项目的开发
提示:以下是本篇文章正文内容,下面案例可供参考
一、搭建系统相关环境
1.注册成为百度AI平台开发者
首先需要登录并注册成为开发者 如图所示:
2.注册后选中产品服务中的语音技术,并创建项目,创建项目的目的是为了获取访问接口的APP_ID,和密钥,如图所示:
创建完成后,查看技术文档及下载python版本的SDK如图所示:
二、使用步骤
1.语音识别
下载完成后即可调用相关的模块进行语音识别的开发
代码如下(示例):
from aip import AipSpeech
import os
import sys
用APPID及密钥创建语音识别的对象,
APP_ID='填入你申请的ID'
API_KEY='填入你申请的KEY'
SECRET_KEY='填入你申请的密钥'
#buid a AipSpeech
client = AipSpeech(APP_ID,API_KEY,SECRET_KEY)
定义读取文件的,及对需要识别的结果发起请求并解析的方法:
#read file
def get_file_content(filepath):
with open(filepath,'rb') as fp:
return fp.read()
#recognize local file
def stt(filename):
try:
result = client.asr(get_file_content(filename),'wav',16000,{'dev_pid':1537,}) #1537 symbol chinese
print result
#parse the return vale,print the result of speech recognition,and write the result to Demo.txt
if result['err_msg']=='success.':
word = result['result'][0]
if word!='':
if word[len(word)-3:len(word)]==', ':
print word[0:len(word)-3]
with open('demo.txt','w') as f:
f.write(word[0:len(word)-3])
f.close()
else:
print word.encode('utf-8')
with open('demo.txt','w') as f:
f.write(word)
f.close()
else:
print('the audio file does not exist or is formatted incorrectly')
else:
print('mistake')
except:
pass
完成以上设置即可调用相关的方法对需要进行识别的文件进行解析,对于返回的result(结果)可以查看语音识别的技术文档,以方便了解相关的返回参数,另外使用识别时一定需要给出识别时所需用到的语音格式及音频的采样率否则可能出错。
2.语音合成
语音合成的过程比语音识别要简单的多,同样也需要先创建语音合成的对象,创建后即可调用相关的方法进行语音的合成输出
代码如下(示例):
from aip import AipSpeech
APP_ID='填你的ID'
API_KEY='填你的KEY'
SECRET_KEY='填你的密钥'
#新建一个AipSpeech
client = AipSpeech(APP_ID,API_KEY,SECRET_KEY)
#将本地文件进行语音合成
def tts(filename,wavefile):
f = open(filename,'r')
command = f.read()
if len(command)!=0:
word = command
f.close()
result = client.synthesis(word,'zh',1,{'vol':5,'per':0,})
#合成正确返回audio.mp3,错误则返回dict
if not isinstance(result,dict):
with open(wavefile,'wb') as f:
f.write(result)
f.close()
print 'tts successful'
if __name__ == '__main__':
tts('scnu.txt','helloworld.mp3')
同样的语音合成需要设置参数也可以在百度开放平台语音技术文档进行查看,可以合成的声音包括中文,英文,中英文,另外也可以设置人声。
总结
最后,尝试将语音合成“你好,世界”的结果送去语音识别,识别与合成的效果都是相当不错的