一.導入SpeechRecognition 包進行語音識別和語音錄製
導入方式:(適用於python3)
pip3 install SpeechRecognition
查詢是否導入成功:(運行python環境)
import speech_recognition as sr
sr.__version__
二.我們在這個過程中需要調用百度API,所以導入百度API包
pip3 install baidu_aip
在python編譯環境下,導入百度API包,調用百度API
from aip import AipSpeech
三.導入語音輸入包
pip3 install pypiwin32
在python編譯環境下,導入語音輸入包
import win32com.client
speaker = win32com.client.Dispatch("SAPI.SpVoice")
speaker.Speak("你好")
下面是調用百度API和圖靈API進行語音聊天輸入和輸出
import speech_recognition as sr #語音識別包
from aip import AipSpeech #音頻文件轉化爲文字 百度API
# 調用圖靈機器人進行對話
import requests
import json
#語音
import win32com.client
#語音輸入
speaker=win32com.client.Dispatch("SAPI.SpVoice")
#使用speechrecognition包,進行語音識別和錄製音頻
def my_record(rate=16000):
r = sr.Recognizer()
with sr.Microphone(sample_rate=rate) as source:
print("please say something")
audio = r.listen(source)
with open("voices/myvoices.wav","wb") as f:
f.write(audio.get_wav_data())
# print("錄音完成!")
#音頻文件轉化爲文字 調用百度API
APP_ID = '####' #百度API id
API_KEY = '#####' #百度API key
SECRET_KEY = '#######' #百度API SECRET_KEY
client = AipSpeech(APP_ID,API_KEY,SECRET_KEY)
path = 'voices/myvoices.wav' #音頻放置位置
def listen():
#讀取錄音文件
with open(path,'rb') as fp:
voices = fp.read()
#識別本地文件 dev_pid參數:1536普通話(支持簡單的英文識別),1537普通話(純中文識別),1737英語,1637粵語,1837四川話,1936普通話遠場
try:
result = client.asr(voices,'wav',1600,{'dev_pid':1537,})
result_text=result["result"][0]
print("you said:"+result_text)
return result_text
except KeyError:
print("KeyError")
speaker.Speak("我沒聽清楚,請再說一遍 !")
#圖靈機器人回覆信息
TL_KEY="######" #圖靈機器人KEY
API_URL="##########" #圖靈機器人調用URL
headers={'Content-Type':'application/json;charset=UTF-8'}
def Turing(text_words=""):
req={
"reqType":0,
"perception":{
"inputText":{
"text":text_words
},
"selfInfo":{
"location":{
"city":"###",
"province":"##",
"street":"###"
}
}
},
"useInfo":{
"apiKey":"#####",
"userId":"####"
}
}
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
while True:
my_record()
request = listen()
response = Turing(request)
speaker.Speak(response)
百度API獲取過程
登錄百度AI開放平臺語音識別:https://ai.baidu.com/tech/speech/asr ,如果沒有賬號自己註冊即可
註冊完畢後,獲取到百度API的開放接口,獲取API-KEY等,接口調用方式有詳細的說明文檔
說明文檔:https://ai.baidu.com/docs#/ASR-Online-Python-SDK/top
圖靈API獲取過程
去圖靈的官網進行註冊:http://www.turingapi.com/
註冊完畢,根據自己需要設置機器人,自定義名稱等等
注意:
(1)要實名認證的,否則只會有key而不能進行調用,後續可能會出現錯誤
(2)要注意關閉密鑰開關
代碼來源(其中添加了自己的註釋):
https://blog.csdn.net/NIeson2012/article/details/96476878