PythonとGoogle Speech APIで実現する音声認識の実装方法を徹底解説
音声認識は、スマートホームの自動化やAIアシスタントなど、さまざまなアプリケーションにおいて最も有用な機能の一つです。本記事では、PythonとGoogle Speech APIを組み合わせて音声認識を実装する方法を、サンプルコード付きでわかりやすく解説します。
ここでは、マイクから入力された音声をリアルタイムに認識するケースを扱います。マイクを正しく動作させるためには、いくつかのパラメータを適切に設定する必要があります。
必要なモジュールのインストール
音声認識を行うには、まず「SpeechRecognition」モジュールをインストールします。あわせて「pyaudio」もインストールしておくと、オーディオの各種モードを細かく制御できるため便利です(任意ですが導入を推奨します)。
sudo pip3 install SpeechRecognition sudo apt-get install python3-pyaudio
マイク設定の4つのポイント
1. マイクデバイスの指定
外部マイクやUSBマイクを使用する場合は、正しいデバイスを明示的に指定することでトラブルを回避できます。Linux環境では「lsusb」コマンドを実行すると、接続中のUSBデバイスの詳細情報を確認できます。
2. チャンクサイズ(Chunk Size)
チャンクサイズは、一度に読み込むデータ量を指定するパラメータです。1024や2048など、2のべき乗となる数値を設定します。
3. サンプリングレート(Sampling Rate)
サンプリングレートは、音声データをどの頻度で記録して処理するかを決める重要な設定項目です。
4. 環境ノイズへの対応
周囲には避けられない環境ノイズが存在するため、事前に環境騒音(ambient noise)を測定・補正することで、目的の音声だけを正確に拾えるようになります。
音声認識の基本的な処理手順
- マイクに関する各種情報を取得する
- チャンクサイズ、サンプリングレート、環境ノイズ補正などを設定してマイクを初期化する
- 音声入力を待機する
- 音声が認識されればテキストへ変換し、失敗した場合はエラーを発生させる
- 処理を終了する
実装例①:マイクからの音声認識
import speech_recognition as spreg
# サンプリングレートとデータサイズを設定
sample_rate = 48000
data_size = 8192
recog = spreg.Recognizer()
with spreg.Microphone(sample_rate=sample_rate, chunk_size=data_size) as source:
recog.adjust_for_ambient_noise(source)
print('Tell Something: ')
speech = recog.listen(source)
try:
text = recog.recognize_google(speech)
print('You have said: ' + text)
except spreg.UnknownValueError:
print('Unable to recognize the audio')
except spreg.RequestError as e:
print("Request error from Google Speech Recognition service; {}".format(e))
実行結果
$ python3 318.speech_recognition.py Tell Something: You have said: here we are considering the asymptotic notation Pico to calculate the upper bound of the time complexity so then the definition of the big O notation is like this one $
このように、話しかけた内容が自動的にテキストへ変換されます。なお、recognize_google()はGoogleのWebサービスを利用するため、実行時にはインターネット接続が必要になる点に注意してください。
実装例②:音声ファイルからの文字起こし
マイクを使わずに、録音済みの音声ファイルを入力としてテキスト化することも可能です。ファイルを読み込む際は、listen()の代わりにrecord()メソッドを使用します。
import speech_recognition as spreg
sound_file = 'sample_audio.wav'
recog = spreg.Recognizer()
with spreg.AudioFile(sound_file) as source:
speech = recog.record(source) # listenの代わりにrecordを使用
try:
text = recog.recognize_google(speech)
print('The file contains: ' + text)
except spreg.UnknownValueError:
print('Unable to recognize the audio')
except spreg.RequestError as e:
print("Request error from Google Speech Recognition service; {}".format(e))
実行結果
$ python3 318a.speech_recognition_file.py The file contains: staying ahead of the curve demand planning new technology it also helps you progress in your career $
このように、SpeechRecognitionモジュールを使えば、マイク入力でも音声ファイルでも、ほんの数行のコードで高精度な音声認識を実装できます。エラーハンドリング(UnknownValueErrorやRequestError)を適切に行うことで、より堅牢なアプリケーションを構築できます。
-
PythonのNews APIでトップニュースを取得する方法【サンプルコード付き】
News APIは、世界中のニュースサイトから記事を検索・取得できる非常に有名なAPIです。このAPIを利用すれば、任意のニュースサイトから最新のトップニュースの見出しを簡単に取得できます。 ただし、News APIを使うにはAPIキーが必要です。APIキーはNews API公式サイトで無料登録すると発行できますので、事前に取得しておきましょう。 サンプルコード:BBCのトップニュースを取得する 以下は、Pythonのrequestsライブラリを使って、BBC Newsのトップニュースの見出しを番号付きで表示するサンプルコードです。 import requests def top_new
-
PythonでのCX_Freezeの使い方:スクリプトを実行ファイル(EXE)に変換する方法
はじめに 何か面白いものを作りたいという欲求は人間の本能であり、完成したものは誰かに共有したくなるものです。Pythonでもその願いを叶えられます。ただし、作成したPythonスクリプトをそのまま共有するには、相手のマシンにも同じバージョンのPythonと、プログラムで使用しているすべてのモジュールがインストールされている必要があります。 そこで役立つのがCX_Freezeです。このツールを使えば、Pythonがインストールされていない環境でも動作するスタンドアロンの実行ファイル(.exe)を作成できます。 CX_Freezeのインストール まず、コマンドプロンプトで以下のコマンドを実行し、c