python リアルタイム音声 文字起こしのやり方[speech_recognition pyaudio 音声認識]

Python
この記事は約3分で読めます。

前回は、Waveファイルに起こしたデータの文字起こしに挑戦してみましたが、今回はリアルタイムでマイク音声 文字起こしする方法に挑戦してみましたので、その方法についてシェアいたします。

今回は、前回までに記事にした二つの合わせ技でリアルタイム文字起こし環境を作成しています。
今回の記事内にURLを張り付けておくので興味ある方はそちらを見てみてください。

使用ライブラリ

まずは、今回のプログラムに必要なライブラリです。

  • pyaudio
  • speech_recognition

今回のライブラリはすでにインストール済みですので、すいませんが、画像はありません。
インストールには以下のコマンドを入力することでインストール可能です。

pip install XXX

※XXXに上記のライブラリ名を入れてください。

プログラムと実行結果

ではいつも通りプログラムの全体です。

import time
import speech_recognition
import pyaudio

SAMPLERATE = 44100

def callback(in_data, frame_count, time_info, status):
    global sprec 
    try:
        audiodata = speech_recognition.AudioData(in_data,SAMPLERATE,2)
        sprec_text = sprec.recognize_google(audiodata, language='ja-JP')
        print(sprec_text)
    except speech_recognition.UnknownValueError:
        pass
    except speech_recognition.RequestError as e:
        pass
    finally:
        return (None, pyaudio.paContinue)
    
def main():
    global sprec 
    sprec = speech_recognition.Recognizer()  # インスタンスを生成
    # Audio インスタンス取得
    audio = pyaudio.PyAudio() 
    stream = audio.open( format = pyaudio.paInt16,
                        rate = SAMPLERATE,
                        channels = 1, 
                        input_device_index = 1,
                        input = True, 
                        frames_per_buffer = SAMPLERATE*2, # 2秒周期でコールバック
                        stream_callback=callback)
    stream.start_stream()
    while stream.is_active():
        time.sleep(0.1)
    
    stream.stop_stream()
    stream.close()
    audio.terminate()
    

    
if __name__ == '__main__':
    main()

実行結果は以下です。
プログラムを実行して、声をマイクに入力したところです。

続いてはプログラムの解説ですが、解説は次ページにて記載します。

コメント

タイトルとURLをコピーしました