語音問答+天然語言處理+圖靈機器人: python
百度AI -- 語音識別--python SDK文檔: web
https://ai.baidu.com/docs#/ASR-Online-Python-SDK/top json
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