第六篇:语音问答+自然语言处理+图灵机器人

语音问答+自然语言处理+图灵机器人:  

  百度AI -- 语音识别--python SDK文档:

    https://ai.baidu.com/docs#/ASR-Online-Python-SDK/top 

  图灵机器人API V2.0接入文档:

    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工具进行格式转换,然后通过语音识别,转换成文字进行自然语言处理,调用图灵机器人进行应答,然后对结果文字尽心语音合

posted @ 2019-07-16 21:59  笑得好美  阅读(730)  评论(0编辑  收藏  举报