一.前期准备
1.在百度智能云官网上注册:https://ai.baidu.com/tech/speech
进入官网-控制台进行注册
注册登录搜索语音识别
进入创建项目,就可以获得自己的 ID和密钥,新人可以领取半年的免费使用
创建之后,应用列表就会有自己创建的应用信息
2.应用创建完成后下载相应的开发SDK,这里采用python开发,下载python-SDK即可
SDK的安装:
将下载的SDK包拷贝到树莓派pi目录下,终端界面解压安装,安装过程如下:
解压包:unzip aip-python-sdk-2.0.0.zip
安装SDK包: sudo pip install baidu-aip
遵循以上步骤操作,就搭建好属于自己的语音识别和语音合成平台,再添加一个麦克风和一个喇叭或者音箱就可以进行语音识别方面的开发了,语音控制小车,控制智能家电等。
一.音频播放
三款树莓派音频播放器omxplayer、sox、mplayer2,目前本项目用的omxplayer
sudo apt-get install omxplayer
sudo apt-get install sox
sudo apt-get install mplayer2
我有一次安装显示没有omxplayer,输入以下命令
pip3 install omxplayer-wrapper
用下面命令播放音频
omxplayer -o local test.mp3
play test.mp3
mplayer test.mp3
二.录音
插入usb声卡,先用命令查看音频播放有哪些声卡。
aplay -l
上面列出的文字注意card 0,device 0这样的信息,会在后面的配置中用到。card 0,device 0相当于hw 0,0
下面再来看下录音的有哪些声卡。
arecord -l
录音命令
sudo arecord -D "plughw:2,0" -f S16_LE -r 16000 -d 5 question1.wav
播放命令
omxplayer -o local question1.wav
语音识别:识别语音转换为文本
#_*_ coding:UTF-8 _*_
# @author: zdl
# 百度云语音识别Demo,实现对本地语音文件的识别。
# 需安装好python-SDK,录音文件不不超过60s,文件类型为wav格式。
# 音频参数需设置为 单通道 采样频率为16K PCM格式 可以先采用官方音频进行测试
# 导入AipSpeech AipSpeech是语音识别的Python SDK客户端
from aip import AipSpeech
import os
''' 你的APPID AK SK 参数在申请的百度云语音服务的控制台查看'''
APP_ID = '114xxxx5'
API_KEY = 'NYIvd23qqGAZxxxxxxxxxxxxxxx'
SECRET_KEY ='DcQWQ9Hxxxxxxxxxxxxxxxxxxxxxx'
# 新建一个AipSpeech
client = AipSpeech(APP_ID, API_KEY, SECRET_KEY)
# 读取文件
def get_file_content(filePath): #filePath 待读取文件名
with open(filePath, 'rb') as fp:
return fp.read()
def stt(filename): # 语音识别
# 识别本地文件
result = client.asr(get_file_content(filename),
'wav',
16000,
{'dev_pid': 1537,} # dev_pid参数表示识别的语言类型 1536表示普通话
)
print result
# 解析返回值,打印语音识别的结果
if result['err_msg']=='success.':
word = result['result'][0].encode('utf-8') # utf-8编码
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.decode('utf-8').encode('gbk'))
with open('demo.txt','w') as f:
f.write(word)
f.close()
else:
print "音频文件不存在或格式错误"
else:
print "错误"
# main函数 识别本地录音文件yahboom.wav
if __name__ == '__main__':
stt('test.wav')
语音合成:文本到语音
#_*_ coding:UTF-8 _*_
# @author: zdl
# 百度云语音合成Demo,实现对本地文本的语音合成。
# 需安装好python-SDK,待合成文本不超过1024个字节
# 合成成功返回audio.mp3 否则返回错误代码
# 导入AipSpeech AipSpeech是语音识别的Python SDK客户端
from aip import AipSpeech
import os
''' 你的APPID AK SK 参数在申请的百度云语音服务的控制台查看'''
APP_ID = '114xxxx5'
API_KEY = 'NYIvd23qqGAZxxxxxxxxxxxxxxx'
SECRET_KEY = 'DcQWQ9Hxxxxxxxxxxxxxxxxxxxxxx'
# 新建一个AipSpeech
client = AipSpeech(APP_ID, API_KEY, SECRET_KEY)
# 将本地文件进行语音合成
def tts(filename):
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('audio.mp3', 'wb') as f:
f.write(result)
f.close()
print 'tts successful'
# main
if __name__ == '__main__':
tts('demo.txt')