第六篇:语音问答+自然语言处理+图灵机器人
语音问答+自然语言处理+图灵机器人:
https://ai.baidu.com/docs#/ASR-Online-Python-SDK/top
https://www.kancloud.cn/turing/www-tuling123-com/718227
百度AI--语音合成--SDK文档--python SDK:
https://ai.baidu.com/docs#/TTS-Online-Python-SDK/top
(1)图灵机器人配置TuringRobotAPI.py
1 ''' 2 图灵机器人API V2.0接入文档:https://www.kancloud.cn/turing/www-tuling123-com/718227 3 ''' 4 import json 5 import requests 6 def turingRobotAnswer(question): 7 request_json={ 8 "reqType":0, #非必须参数:输入类型:0-文本(默认)、1-图片、2-音频 9 "perception": { #必须参数:输入信息(注意:输入参数必须包含inputText或inputImage或inputMedia) 10 "inputText": { #非必须参数:文本信息 11 "text": question #必须参数:1-128字符 ,直接输入文本 12 }, 13 # "inputImage": { #非必须参数:图片信息 14 # "url": "imageUrl" 15 # }, 16 # "inputMedia":{ #非必须参数:音频信息 17 # 18 # }, 19 # "selfInfo": { #非必须参数:客户端属性 20 # "location": { 21 # "city": "北京", 22 # "province": "北京", 23 # "street": "信息路" 24 # } 25 # } 26 }, 27 "userInfo": { #必须参数:用户参数 28 "apiKey": "11cb5ce350c54016974151892635388b", #必须参数:32位,机器人标识 29 "userId": "123" #必须参数:长度小于等于32位,用户唯一标识 30 } 31 } 32 result=requests.post('http://openapi.tuling123.com/openapi/api/v2',json=request_json)#POST请求,参数文档有说明 33 # print(result) 34 text_answer=json.loads(result.content).get('results')[0].get('values').get('text') 35 return text_answer
(2)语音应答逻辑AI_QA.py:
1 from aip import AipSpeech,AipNlp 2 import os 3 from TuringRobotAPI import turingRobotAnswer 4 5 APP_ID = '16815394' 6 API_KEY = 'jM4b8GIG9gzrzySTRq3szK2E' 7 SECRET_KEY = 'iE626cEpjT1iAVwh24XV5h1QFuR8FPD2' 8 9 SPEECH_client = AipSpeech(APP_ID, API_KEY, SECRET_KEY) 10 NlP_client = AipNlp(APP_ID, API_KEY, SECRET_KEY) 11 12 def get_file_content(filePath): 13 14 #文件格式转换成pcm(前提是需要安装ffmpeg软件并配置环境变量) 15 pcm_filePath = filePath.split('.')[0] + '.pcm' 16 cmd_str=f'ffmpeg -y -i {filePath} -acodec pcm_s16le -f s16le -ac 1 -ar 16000 {pcm_filePath}' 17 os.system(cmd_str)#调用os.system()在CMD执行命令 18 filePath=pcm_filePath 19 20 with open(filePath, 'rb') as fp: 21 return fp.read() 22 23 24 # ASR识别本地文件(语音识别) 25 result=SPEECH_client.asr(get_file_content('0_question2.m4a'), 'pcm', 16000, { 26 'dev_pid': 1536, 27 }) 28 text=result.get('result')[0] 29 # print(text) 30 31 #NLP自然语言处理,相似度判断(NLP自然语言处理) 32 A='我不知道你在说什么!' 33 score=NlP_client.simnet(text,'你叫什么名字?').get('score') 34 # print(score) 35 if score > 0.58: 36 A='你好,我是语音小助手飞飞!' 37 else: 38 A=turingRobotAnswer(text)#图灵机器人接入 39 # print(A) 40 41 42 #TTS合成语音文件(语音合成) 43 voice={'spd':5,'pit':7,'vol': 6,'per':4,} 44 audio=SPEECH_client.synthesis(A,'zh',1,voice) 45 # print(audio) 46 if not isinstance(audio,dict): 47 with open('0_answer2.mp3','wb') as f: 48 f.write(audio)
将语音先用ffmpeg工具进行格式转换,然后通过语音识别,转换成文字进行自然语言处理,调用图灵机器人进行应答,然后对结果文字尽心语音合