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

你可能感兴趣的:(技术分享)