基於Python與百度的AI介面的語音轉文字的簡單小程式。
阿新 • • 發佈:2019-01-27
匯入 wave #匯入wave Python自帶 來自 pyaudio 匯入 PyAudio , paInt16 #匯入pyaudio模組內的類和常量安裝方法pip install pyaudio from aip import AipSpeech #匯入百度AI SDK安裝方法pip install baidu-aip import time #paInt16 framerate = 16000 #全域性變數取樣率 NUM_SAMPLES = 2000 #錄音位元組 shengdao = 1 #取樣聲道zijie = 2 TIME = 5 #錄音時長 “”“保存錄音函式 sava_wava_file ”“” def save_wave_file(檔名,資料): wf = wave.open(filename ,'wb')#以二進位制形式 寫入wf.setnchannels(shengdao)#聲道 wf.setsampwidth(zijie)#取樣位元組1或2 wf.setframerate(framerate)#取樣頻率8000或16000 wf.writeframes(b“”。 join(data))#從檔案末尾新增資料 wf.close()#關閉檔案,釋放緩衝 “”“ 錄音函式 my_record ”“” def my_record(): pa = PyAudio()#例項化操作wave流的類 stream = pa.open(format = paInt16 ,channels = 1 ,rate = framerate ,input = True,frames_per_buffer = NUM_SAMPLES)#開啟音訊流,格式,頻道,取樣率,輸入,每次的大小 my_buf = [] #空資料列表,儲存流 .count = 0 #計數,退出錄音迴圈 列印(“請說話:”) T1 = time.clock() 當 count <TIME * 5:#控制錄音時間3 * 5 * 2000 = 30000string_audio_data = stream.read(NUM_SAMPLES)#一次性錄音取樣位元組大小 my_buf.append(string_audio_data)#每次將資料追加到儲存資料的list中 計數+ = 1 列印('。') T2 = time.clock() print('一共錄音' , t2-t1 ,'秒') save_wave_file('d:/123/01.wav' , my_buf) 。#將資料儲存到路徑檔案中 stream.close() #關閉流 my_record() #呼叫函式 “” “你的APPID AK SK ”“” APP_ID = '' #從百度獲取屬於你自己的 API_KEY = '' #從百度獲取屬於你自己的 SECRET_KEY = '' #從百度獲取屬於你自己的 client = AipSpeech(APP_ID , API_KEY , SECRET_KEY)#獲取連結.... #pa = input(“輸入語音檔案:”) “”“ 讀取音訊函式 getWAV ”“” 高清getWAV(路徑): 與 開放(path ,'rb')as fi: #開啟音訊檔案,並命名別名fi return fi.read() #返回讀取的音訊資料 “”“ 語音識別函式 ”“” def AIaudio(): Json = client.asr(getWAV('D:/123/01.wav'),'pcm' ,16000 ,無) #請求連結,上傳資料,獲取返回資料。 #print(Json) 試試: s = Json [ “result” ] print(s) 返回 s [ 0 ], 除了KeyError: print('音訊質量或者是其他錯誤....') return 0 AIaudio()
希望大佬們多多指正.....