第六篇:語音問答+天然語言處理+圖靈機器人

語音問答+天然語言處理+圖靈機器人:  python

  百度AI -- 語音識別--python SDK文檔: web

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

  圖靈機器人API V2.0接入文檔:api

    https://www.kancloud.cn/turing/www-tuling123-com/718227 工具

  百度AI--語音合成--SDK文檔--python SDK:post

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

(1)圖靈機器人配置TuringRobotAPI.pyspa

 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:code

 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工具進行格式轉換,而後經過語音識別,轉換成文字進行天然語言處理,調用圖靈機器人進行應答,而後對結果文字盡心語音合orm

相關文章
相關標籤/搜索