Pythonの音声入力認識

I.はじめに

ローカル記録に1.最初のステップ

2.コールBaiduの音声認識SDK

注意事項:音源の音声認識によって必要とBaiduは、ビットレートは256kbpsでなければなりません

第二に、コード

必要なライブラリをインストールします 
PIPインストールBaiduのを-AIP BaiduのSDK 
PIP pyaudioをインストール
インポートウェーブ
 インポートpyaudio
 から AIP インポートAipSpeech 

DEF レコード():データを定義するブロックストリーム 
    CHUNK = 1024 
    FORMATを = pyaudio.paInt16
     百度認識したい、次の2つのパラメータは、ビットレートが256kbpsなるように設定されなければならない 
    チャネルを1 =。
    RATE = 16000
     録画時間 
    RECORD_SECONDS = 8 filenameは書き込む 
    = WAVE_OUTPUT_FILENAMEを" output.wav " #はオブジェクトがPyAudio作成 
    P- = pyaudio.PyAudio() オープンストリームの 
    ストリーム= p.open(フォーマット=
    
    

    フォーマット
                    チャネル = CHANNELS、
                    速度 = RATE、
                    入力 = 真、
                    frames_per_buffer = CHUNK)

    プリント" *録音" 

    开始录音 
    フレーム= []
     のための I における範囲(0、INT(RATE / CHUNK * RECORD_SECONDS)):
        データ = ストリーム.read(CHUNK)
        frames.append(データ)

    印刷" *なさ記録" 停止数据流
    stream.stop_stream()
    stream.close() 

    关闭PyAudio 
    p.terminate() 

    写入录音文件 
    WF = wave.open(WAVE_OUTPUT_FILENAME、' WB ' 
    wf.setnchannels(チャネル)
    wf.setsampwidth(p.get_sample_size(FORMAT ))
    wf.setframerate(RATE)
    wf.writeframes(B '' .join(フレーム))
    wf.close()



DEF ASR():
    录音
    レコード()

    "" " 你的APPID AK SK """ 
    APP_ID = " **** ' 
    API_KEY = '**** "
    SECRET_KEY = ' **** ' 

    クライアント = AipSpeech(APP_ID、API_KEY、SECRET_KEY) 

    读取文件
    デフget_file_content(filePathに):
        オープン(filePathに、と' RB ' FPとして):
             リターンfp.read() 

    识别本地文件 
    RES = client.asr(get_file_content(' output.wav ')、' WAV '、16000 、{
         ' dev_pid ':1536 
    })

    プリント(RES)

場合 __name__ ==__Man__ " 
    アスリ()

第三に、音声コマンド制御プログラム

インポートウェーブ
 インポートpyaudio
 から AIP インポートAipSpeech
 インポートのWin32API 

DEF レコード():
    データストリーム定義ブロック 
    CHUNK = 1024 
    FORMATを = pyaudio.paInt16
     百度認識したい、次の2つのパラメータは、ビットレートが256kbpsなるように設定されなければならない 
    チャネルを1 =。
    RATE = 16000
     #の記録時間 
    RECORD_SECONDS = 8 ファイル名を書き込むための 
    WAVE_OUTPUT_FILENAMEを= " output.wav " #は、作成はPyAudioは、オブジェクト 
    のp = pyaudio.PyAudio() データ・ストリームを開きます
    
    

    
    ストリーム= p.open(FORMAT = FORMAT、
                    チャネル = チャネル、
                    レート = RATE、
                    入力 = 真、
                    frames_per_buffer = CHUNK)

    プリント" *録音" 

    开始录音 
    フレーム= []
     のための I における範囲(0、INT(RATE / CHUNK * RECORD_SECONDS)):
        データ = stream.read(CHUNK)
        frames.append(データ)

    の印刷" *完了レコーディング" ストップフロー
    stream.stop_stream()
    stream.close() 

    近くPyAudioの
    p.terminate() 

    書き込みレコードファイル 
    WF = wave.open(WAVE_OUTPUT_FILENAME、' WB ' 
    wf.setnchannels(チャンネル)
    wf.setsampwidth (p.get_sample_size(FORMAT))
    wf.setframerate(RATE)
    wf.writeframes(B '' .join(フレーム))
    wf.close()



DEF ASR():
    記録し
    たレコード()

    "" " あなたのAPPID AK SKを"" " 
    APP_ID = ' **** '
    API_KEY = ' **** ' 
    SECRET_KEYの = ' **** ' 

    クライアント = AipSpeech(SECRET_KEYのAPP_ID、API_KEY、) 

    、ファイルを読み込む
    DEF (filePathに)get_file_content:
        オープン(filePathに、と' RB ' :)AS FP
             リターンFP .read() 

    ローカルファイルを識別 
    RES = client.asr(get_file_content(' output.wav ')、' WAV '、16000 、{
         ' dev_pid ':1536 
    })
    IF  否定 res.get(" err_no " ):
         戻り res.get(" 結果" )[0]に
     戻り res.get(" err_no " 

DEF コントロール(注文):
    プログラムパスに対応するコマンド 
    open_order = { " オープンQQ ":R " C:\プログラムファイル(x86の)\テンセント\ QQ \ビン\ QQScLauncher.exe " " オープンメモ帳":R " D:\メモ帳++ \メモ帳++ EXE " " 開いているブラウザ:R "C:\ Users \ユーザーffm11 \のAppData \ローミング\ 360se6 \アプリケーション\ 360se.exe " } 
    RES = open_order.get(注文)
     IF RES:
        パラメータ1:指定エラーが関数呼び出し中に発生した親ウィンドウハンドル。それは、Windowsのメッセージ親ウィンドウとして機能します
        。#。2パラメータ:指定操作をするために行われる
        「オープン」というパラメータlpFileプログラム、またはファイルまたはフォルダで指定されたオープンlpFileパラメータで指定された操作の実装; 
        「を印刷「操作は、印刷パラメータがlpFileファイルで指定されていることを示し; 
        」「操作を探検はlpFileパラメータは、フォルダを参照して指定を示している。
        パラメータ3:実行されるように、オープンするプログラムのファイル名をファイル名を指定するか、[参照ファイルにフォルダ名。
        パラメータ4:もしlpFileパラメータが実行可能なプログラムでは、このパラメータは、そうでない場合は、このパラメータがNULLである必要があり、コマンドラインパラメータを指定します。
        パラメータ5:もしlpFileパラメータが実行可能なプログラムで、このパラメータは、ウィンドウを指定します初期表示モードそれ以外の場合は、このパラメータを0に設定する必要があります。
        一般的に、このパラメータ定数で使用される:
        #1 にするSW_HIDE非表示ウィンドウ、アクティブウィンドウ
        #をSW_MINIMIZEウィンドウアクティブ状態にするために、ウィンドウを最小化
        #1 ながら、それがアクティブ状態になるように、元のサイズと位置とSW_RESTOREディスプレイにウィンドウを
        SW_SHOWは、それが中にアクティブ状態になるように、現在のサイズと位置でウィンドウを表示する
        SW_SHOWMAXIMIZED最大ウィンドウ、およびアクティベート
        SW_SHOWMINIMIZEDウィンドウを最小化し、アクティベート
        アクティブウィンドウの変化はないが、SW_SHOWMINNOACTIVEウィンドウが最小化され
        #1 ウインドウの現在のサイズおよび位置、アクティブウインドウが変更されていないSW_SHOWNAディスプレイ
        #1 最近でSW_SHOWNOACTIVATEをアクティブウィンドウ変えずに、ウィンドウのサイズと位置を表示 
        win32api.ShellExecute(0、オープン、RESを、「」「」、1。 それ以外印刷音声コマンドが失敗した

のIF  __name__ ==' __main__ ' 
    順序 = ASR()
    コントロール(order.rstrip(" "))

 

おすすめ

転載: www.cnblogs.com/angelyan/p/12005974.html