百度智能雲文檔連接 : https://cloud.baidu.com/doc/SPEECH/index.htmlhtml
1.百度語音合成json
概念: 顧名思義,就是將你輸入的文字合成語音,例如:api
from aip import AipSpeech """ 你的 APPID AK SK """ APP_ID = '16027154' API_KEY = '5a8u0aLf2SxRGRMX3jbZ2VH0' SECRET_KEY = 'UAaqS13z6DjD9Qbjd065dAh0HjbqPrzV' #上面這些東西,都在咱們的百度語音的應用列表中 client=AipSpeech(APP_ID,API_KEY,SECRET_KEY) result=client.synthesis('大噶好,吾系渣渣輝,系兄弟就來砍我','zh',1,{ 'spd' :4, 'vol' :5, 'pit' :8, 'per' :4 }) #識別徵求返回語音二進制,錯誤則返回dict if not isinstance(result,dict): with open('audio.mp3','wb') as f: f.write(result)
參數:ide
tex : 合成的文本,使用UTF-8編碼,注意文本長度必須小於1024字節 必須有函數
culid :用戶惟一標識,用來區分用戶,填寫機器的MAC地址或IMEI碼, 長度60之內 沒必要須有post
spd : 語速 ,取值0-15,默認爲5(中語速) 沒必要須有ui
pit : 音調,取值0-15,默認爲5(中語調) 沒必要須有編碼
vol : 音量,取值0-15,默認爲5(中音量) 沒必要須有spa
per:發音人選擇,0爲女聲,1位男聲,3爲情感合成-度逍遙,4爲感情合成-度丫丫,默認爲0 沒必要須有code
2.百度語音識別
概念: 同上,就是將你的音頻文件的內容讀出來,至關於電子書
import os from aip import AipSpeech """ 你的 APPID AK SK """ APP_ID = '16027160' API_KEY = 'uzx4SWZuimPqbE4LvxYScEhi' SECRET_KEY = '3HBy8yi11ID9T4yyxkADuGYOGyavxPdG' client = AipSpeech(APP_ID, API_KEY, SECRET_KEY) #語音合成,經過語音生成文字 def get_file_content(filePath): os.system(f'ffmpeg -y -i {filePath} -acodec pcm_s16le -f s16le -ac 1 -ar 16000 {filePath}.pcm') with open(f'{filePath}.pcm', 'rb') as fp: return fp.read() # 識別本地文件 ret = client.asr(get_file_content('nszm.m4a'), 'pcm', 16000, { 'dev_pid': 1536, })
#得出音頻文件中的內容,打印出來 print(ret.get('result')[0])
3.百度NLP天然語言處理 -- simnet短文本類似度
from aip import AipNlp
""" 你的 APPID AK SK """
APP_ID = '16027160'
API_KEY = 'uzx4SWZuimPqbE4LvxYScEhi'
SECRET_KEY = '3HBy8yi11ID9T4yyxkADuGYOGyavxPdG'
client_nlp = AipNlp(APP_ID, API_KEY, SECRET_KEY)
text='大噶好,吾系渣渣輝,是兄弟就來砍我'
#這裏算出來的是類似度(score)
score=client_nlp.simnet('你叫什麼名字呀',text) if score >=0.58: filename=執行某個函數 os.system(filename)
4.對接圖靈機器人 實現智能問答
這裏我說一下個人邏輯:
我先經過語音合成弄了一個音頻,而後經過語音識別讀取出我音頻的內容,最後經過鏈接圖靈機器人,進行智能問答
import os from aip import AipSpeech, AipNlp """ 你的 APPID AK SK """ APP_ID = '16027160' API_KEY = 'uzx4SWZuimPqbE4LvxYScEhi' SECRET_KEY = '3HBy8yi11ID9T4yyxkADuGYOGyavxPdG' client = AipSpeech(APP_ID, API_KEY, SECRET_KEY) client_nlp = AipNlp(APP_ID, API_KEY, SECRET_KEY) # 語音識別,將你輸入的文字轉化爲語音 def AI_voice(file): result = client.synthesis(file, 'zh', 1, { 'spd': 5, 'vol': 5, 'pit': 5, 'per': 2 }) if not isinstance(result, dict): with open('audio.mp3', 'wb') as f: f.write(result) return 'audio.mp3' # 語音合成,經過語音生成文字,在這裏只是讀出文字,並無寫出來,下面這一步纔是將語音中的文字return出來 def get_file_content(file): os.system(f"ffmpeg -y -i {file} -acodec pcm_s16le -f s16le -ac 1 -ar 16000 {file}.pcm") with open(f'{file}.pcm', 'rb') as fp: return fp.read() # 返回的是你語音中的消息 def voice_content(file): result = client.asr(get_file_content(file), 'pcm', 16000, { 'dev_pid': 1536, }) # print(result.get('result')[0]) return result.get('result')[0] def goto_tl(text, uid): URL = "http://openapi.tuling123.com/openapi/api/v2" import requests data = { "perception": { "inputText": { "text": "你叫什麼名字" } }, "userInfo": { "apiKey": "be41cf8596a24aec95b0e86be895cfa9", "userId": "123" } } data["perception"]["inputText"]["text"] = text data["userInfo"]["userId"] = uid res = requests.post(URL, json=data) print(res.content) # print(res.text) # print(res.json()) return res.json().get("results")[0].get("values").get("text") text = voice_content("nszm.m4a") # 天然語言的處理,比較low版 # 獲取類似度 score = client_nlp.simnet('你叫什麼名字', text).get('score') print(score) if score >= 0.58: filename = AI_voice('我是你爸爸,我喜歡你媽媽') os.system(filename) # 將我語音中的內容識別出來,並進行返回, answer = goto_tl(text, 'XiaoQiang') name = AI_voice(answer) os.system(name)