基於百度語音識別API的Python語音識別小程序


一、功能概述

實現語音為文字,可以擴展到多種場景進行工作,這里只實現其基本的語言接收及轉換功能。
在語言錄入時,根據語言內容的多少與停頓時間,自動截取音頻進行轉換。
工作示例:

二、軟件環境

  • 操作系統:win10

  • 語言:Python 版本:3.6.0

  • Python庫:AipSpeech(百度語音識別SDK客戶端),wave,PyAudio,paInt16

    Python庫安裝:除百度為:pip install baidu-aip,其他直接 pip install *(庫名) 即可。

三、原理概述

利用wave,PyAudio搭建一個wav格式的簡易錄音機,基於百度API進行wav格式的音頻轉文本。

  • 簡易錄音機類(WWAV)有__save_wave_file音頻文件保存方法與my_record音頻錄制方法。在錄制音頻的方法中,加入了有效音頻測試的代碼,可以測試一小段時間內是否有有效音頻輸入,否則退出音頻錄制。
  • 轉換類(Translation)則為__get_file_content方法與get_word音頻轉換主方法。

四、核心代碼

my_record音頻錄制方法(WWAV類)

def my_record(self,TIME = 60,INTERVAL = 5):
    '''錄制並保存音頻文件,TIME錄制時間,INTERVAL測試間隔'''
    pa=PyAudio()
    tr = Translation()
    stream=pa.open(format = paInt16,channels=self.__channels,
                   rate=self.__framerate,input=True,
                   frames_per_buffer=self.__NUM_SAMPLES)
    my_buf=[] # 主音頻源
    buf=[] # 測試音頻源
    i=0
    while i < TIME*2: #控制錄音時間
        string_audio_data = stream.read(self.__NUM_SAMPLES)  # 獲取音頻片段
        my_buf.append(string_audio_data)
        
        if i < INTERVAL*2:
            buf.append(string_audio_data)
            i += 1
        elif i == INTERVAL*2:
            self.__save_wave_file('00.wav',buf) # 保存測試音頻
            err,a = tr.get_word('00.wav') # 得到測試音頻是否有效
            if err == 0:
                break
            i = 0 # 初始化
            buf = [] # 同上
    
        print('.',end = ' ')
    self.__save_wave_file('01.wav',my_buf)
    stream.close()

get_word音頻轉換方法(Translation類)

def get_word(self,filePath):
    '''音頻轉文字,參數filePath為wav音頻地址,返回雙值:狀態(1為轉換成功)及轉換后文本或錯誤信息'''
    word = self.__client.asr(self.__get_file_content(filePath),'wav',8000,{
        'lan': 'zh'
        }) # 參數:語音對象,文件格式,采樣率,語種類型

    if word['err_no'] == 0: # 錯誤值為0(即正確)
        return 1,word['result'][0] # 返回 1 與 文本信息
    else:
        return 0,word['err_no'] # 否則返回 0 與 錯誤內容

源碼

GitHub地址

附:我又回來了,這個是不是大項目,正在寫,敬請期待!寒假會更一些學習筆記,一起加油

以上


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM