python實現語音機器人聊天

一.導入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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章