树莓派做一个聊天机器人
首先来安装所需要的第三方库:
pip3 install baidu-aip
为了播放音频,还需要安装播放器:
sudo apt-get install omxplayer
sudo apt-get -y install mpg321
然后来看第一步,录音,通过麦克风录入音频,文件保存在当前目录下,一个函数解决:
def Sound_Recording(path) :
# 1.录音,通过麦克风录入音领,文件保存在当前目录下。
print("Recording: ")
os.system('sudo arecord -D "plughw:1,0" -f S16_LE -r 16000 -d 4' + path)
# time.sleep(2)
# print("play:" )
# os.system( 'sudo omxplayer +path)
其次来看第二步,通过调用百度语音识别的的API将音频文件转换为文本文件,这里需要在百度开发者平台申请一个应用:
APP_ID = '16****18'
API_KEY = 'MBb******************U02'
SECRET_KEY = 'WEGcGnz******************0ih51bN'
client = AipSpeech(APP_ID, API_KEY, SECRET_KEY)
def speech_recognition(path) :
# 2.通过调用百度语音识别的API将音频文件转换为文本文件。
with open(path, 'rb') as fp :
voices = fp.read()
try :
result = client.asr(voices, 'wav', 16000, {'dev_pid' : 1537.})
# print(result )
result_text = result["result"][0]
print("you said: " + result_text)
return result_text
except KeyError :
print("KeyError")
然后是第三步,将文本文件通过图灵机器人的API进行对话处理,保存回复文本文件,这里同样需要在图灵机器人平台申请一个聊天机器人:
turing_api_key = 'fad1ed7e**************1b14206fd0'
api_url = 'http://openapi.tuling123.com/openapi/api/v2'
headers = {'Content-Type':'application/json;charset=UTF-8'}
def Tu_Ling(text_words=""):
#3.将文本文件通过图灵机器人的API进行对话处理,保存恢复文本文件,
req={
"reqType":0,
"perception": {
"inputText": {
"text": text_words
},
"selfInfo": {
"location": {
"city": "天津",
"province":"天津",
"street": "天津科技大学"
}
}
},
"userInfo": {
"apiKey": turing_api_key,
"userId": "Alex"
}
}
req["perception"]["inputText"]["text"] = text_words
response = requests.request("post",api_url, json=req, headers=headers)
response_dict = json.loads(response.text)
result = response_dict ["results"][0]["values"]["text"]
print("AI Robot said: "+ result)
return result
最后一步,将回复文本文件转换为语音。:
def speech_synthesis(text_words=""):
#4.将回复文本文件转换为语音。
result = client.synthesis(text_words, 'zh', 1, {'per':4, 'vol':10, 'pit':9, 'spd':5})
if not isinstance(result, dict):
with open('auido.mp3','wb') as f:
f.write(result)
os. system('mpg321 auido.mp3')