音声認識を実行するためのライブラリ。オンラインおよびオフラインで複数のエンジンと API をサポートします。
更新 2022-02-09 : 皆さん、こんにちは!このプロジェクトは技術デモとして始まりましたが、最近ではすべての PR や問題を把握するのに時間がかかりすぎています。したがって、共同研究者を公募したいと思います。ご興味がございましたら、[email protected] までご連絡ください。
音声認識エンジン/APIのサポート:
クイックスタート: pip install SpeechRecognition
。詳細については、「インストール」セクションを参照してください。
すぐに試してみるには、インストール後にpython -m speech_recognition
を実行します。
プロジェクトのリンク:
ライブラリ参照は、ライブラリ内の公的にアクセス可能なすべてのオブジェクトを文書化します。このドキュメントは、 reference/library-reference.rst
にも含まれています。
言語のインストール、PocketSphinx のコンパイル、オンライン リソースからの言語パックの構築については、「PocketSphinx の使用に関する注意事項」を参照してください。このドキュメントは、 reference/pocketsphinx.rst
にも含まれています。
Vosk を使用するには Vosk モデルをインストールする必要があります。利用可能なモデルは次のとおりです。これらは、「your-project-folder/models/your-vosk-model」のように、プロジェクトのモデルフォルダーに配置する必要があります。
使用例については、リポジトリ ルートのexamples/
ディレクトリを参照してください。
recognizer_instance.energy_threshold
参照してください)。まず、「要件」セクションに記載されている要件をすべて満たしていることを確認してください。
これをインストールする最も簡単な方法は、 pip install SpeechRecognition
を使用することです。
それ以外の場合は、PyPI からソース配布をダウンロードし、アーカイブを抽出します。
フォルダー内でpython setup.py install
実行します。
ライブラリのすべての機能を使用するには、以下が必要です。
Microphone
使用する必要がある場合にのみ必要)recognizer_instance.recognize_sphinx
を使用する必要がある場合にのみ必要)recognizer_instance.recognize_google_cloud
を使用する必要がある場合にのみ必要)recognizer_instance.recognize_vosk
recognizer_instance.recognize_whisper
を使用する必要がある場合にのみ必要)recognizer_instance.recognize_openai
)recognizer_instance.recognize_groq
場合にのみ必須)次の要件はオプションですが、状況によっては機能を改善または拡張できます。
次のセクションでは、各要件の詳細について説明します。
最初のソフトウェア要件は Python 3.9 以降です。図書館を利用するために必要です。
PyAudio は、マイク入力 ( Microphone
) を使用する場合にのみ必要です。以前のバージョンには、特定の状況でマイクから録音するときにメモリ管理のバグがあることが知られているため、PyAudio バージョン 0.2.11 以降が必要です。
インストールされていない場合でも、 Microphone
オブジェクトをインスタンス化しようとするとAttributeError
発生することを除いて、ライブラリ内のすべては引き続き機能します。
PyAudio Web サイトのインストール手順は非常に優れています。便宜上、以下に要約します。
pip install SpeechRecognition[audio]
を実行します。sudo apt-get install python-pyaudio python3-pyaudio
を実行します。sudo apt-get install portaudio19-dev python-all-dev python3-all-dev && sudo pip install SpeechRecognition[audio]
( pip
pip3
に置き換えます) Python 3 を使用します)。brew install portaudio
。次に、 Pip を使用して PyAudio をインストールします: pip install SpeechRecognition[audio]
。portaudio19-dev
およびpython-all-dev
(Python 3 を使用している場合はpython3-all-dev
) パッケージ (またはそれらに最も近い同等のもの) をインストールし、PyAudio でインストールします。 Pip の使用: pip install SpeechRecognition[audio]
(Python 3 を使用している場合は、 pip
pip3
に置き換えます)。 Windows および Linux 上の一般的な 64 ビット Python バージョン用の PyAudio ホイール パッケージは、リポジトリ ルートのthird-party/
ディレクトリの下に便宜上含まれています。インストールするには、リポジトリのルート ディレクトリでpip install wheel
を実行し、続いてpip install ./third-party/WHEEL_FILENAME
(Python 3 を使用している場合はpip
pip3
に置き換えます) を実行するだけです。
PocketSphinx-Python は、Sphinx 認識エンジン ( recognizer_instance.recognize_sphinx
)を使用する場合にのみ必要です。
Windows 上の 64 ビット Python 3.4 および 3.5 用の PocketSphinx-Python ホイール パッケージは、便宜上、 third-party/
ディレクトリに含まれています。インストールするには、SpeechRecognition フォルダーでpip install wheel
実行し、続いてpip install ./third-party/WHEEL_FILENAME
(Python 3 を使用している場合はpip
pip3
に置き換えます) を実行するだけです。
Linux および他の POSIX システム (OS X など) では、 pip install SpeechRecognition[pocketsphinx]
を実行します。インストール手順については、PocketSphinx の使用に関する注意事項の「ソースからの PocketSphinx-Python のビルド」の手順に従ってください。
ほとんどのパッケージ リポジトリで利用可能なバージョンは古いため、バンドルされている言語データでは動作しないことに注意してください。バンドルされている Wheel パッケージを使用するか、ソースからビルドすることをお勧めします。
言語のインストール、PocketSphinx のコンパイル、オンライン リソースからの言語パックの構築については、「PocketSphinx の使用に関する注意事項」を参照してください。このドキュメントは、 reference/pocketsphinx.rst
にも含まれています。
Vosk API は、Vosk レコグナイザー ( recognizer_instance.recognize_vosk
)を使用する場合にのみ必要です。
python3 -m pip install vosk
でインストールできます。
Vosk モデルもインストールする必要があります。
ダウンロード可能なモデルはこちらです。これらは、「your-project-folder/models/your-vosk-model」のように、プロジェクトのモデルフォルダーに配置する必要があります。
Python 用 Google Cloud Speech ライブラリは、Google Cloud Speech API ( recognizer_instance.recognize_google_cloud
) を使用する場合にのみ必要です。
インストールされていない場合でも、ライブラリ内のすべての機能は引き続き機能しますが、 recognizer_instance.recognize_google_cloud
呼び出すとRequestError
発生します。
公式のインストール手順によると、これをインストールする推奨方法は Pip を使用することです。 pip install google-cloud-speech
実行します (Python 3 を使用している場合はpip
pip3
に置き換えます)。
API に送信するオーディオ データをエンコードするには FLAC エンコーダーが必要です。 Windows (x86 または x86-64)、OS X (Intel Mac のみ、OS X 10.6 以降)、または Linux (x86 または x86-64) を使用している場合、これはすでにこのライブラリにバンドルされています - 何もインストールする必要はありません。
それ以外の場合は、 flac
コマンド ライン ツールがあることを確認してください。このツールは、多くの場合、システム パッケージ マネージャーを通じて入手できます。たとえば、これは通常、Debian 派生版の場合はsudo apt-get install flac
、Homebrew を使用する OS X の場合はbrew install flac
になります。
Whisper は、ウィスパー ( recognizer_instance.recognize_whisper
)を使用する場合にのみ必要です。
python3 -m pip install SpeechRecognition[whisper-local]
でインストールできます。
ライブラリ openai は、OpenAI Whisper API ( recognizer_instance.recognize_openai
)を使用する場合にのみ必要です。
python3 -m pip install SpeechRecognition[openai]
でインストールできます。
recognizer_instance.recognize_openai
を呼び出す前に、環境変数OPENAI_API_KEY
設定してください。
ライブラリ groq は、Groq Whisper API ( recognizer_instance.recognize_groq
)を使用する場合にのみ必要です。
python3 -m pip install SpeechRecognition[groq]
でインストールできます。
recognizer_instance.recognize_groq
を呼び出す前に、環境変数GROQ_API_KEY
設定してください。
recognizer_instance.energy_threshold
プロパティを増やしてみてください。これは基本的に、いつ認識を開始する必要があるかについて、認識装置がどの程度敏感であるかを表します。値が高いほど感度が低くなり、騒々しい部屋にいる場合に便利です。
この値は、マイクまたは音声データに完全に依存します。すべてに当てはまる万能の値はありませんが、通常は 50 ~ 4000 の範囲が適切な値です。
また、マイクの音量設定も確認してください。感度が高すぎる場合、マイクが周囲のノイズを多く拾っている可能性があります。感度が低すぎると、マイクが音声を単なるノイズとして拒否している可能性があります。
recognizer_instance.energy_threshold
プロパティは、最初は高すぎる値に設定されている可能性があり、その後、動的エネルギーしきい値調整によって自動的に低く調整されます。適切なレベルに達する前は、エネルギーしきい値が非常に高くなるため、音声は単に周囲の騒音と見なされます。
解決策は、このしきい値を下げるか、事前にrecognizer_instance.adjust_for_ambient_noise
を呼び出して、しきい値を適切な値に自動的に設定することです。
認識言語をあなたの言語/方言に設定してみてください。これを行うには、 recognizer_instance.recognize_sphinx
、 recognizer_instance.recognize_google
、 recognizer_instance.recognize_wit
、 recognizer_instance.recognize_bing
、 recognizer_instance.recognize_api
、 recognizer_instance.recognize_houndify
のドキュメントを参照してください。 recognizer_instance.recognize_ibm
。
たとえば、言語/方言がイギリス英語の場合、言語として"en-US"
ではなく " "en-GB"
を使用することをお勧めします。
recognizer_instance.listen
でハングします。具体的には、 Microphone.MicrophoneStream.read
を呼び出すときです。これは通常、それ自体にオーディオ入力機能がない Raspberry Pi ボードを使用しているときに発生します。これにより、PyAudio が使用するデフォルトのマイクは、読み取ろうとしたときに単純にブロックされます。 Raspberry Pi を使用している場合は、USB サウンド カード (または USB マイク) が必要になります。
これを実行したら、 Microphone()
のすべてのインスタンスをMicrophone(device_index=MICROPHONE_INDEX)
に変更します。ここで、 MICROPHONE_INDEX
はマイクのハードウェア固有のインデックスです。
MICROPHONE_INDEX
の値を確認するには、次のコードを実行します。
import speech_recognition as sr
for index , name in enumerate ( sr . Microphone . list_microphone_names ()):
print ( "Microphone with name " {1} " found for `Microphone(device_index={0})`" . format ( index , name ))
これにより、次のようなものが出力されます。
「Microphone(device_index=0)」に「HDA Intel HDMI: 0 (hw:0,3)」という名前のマイクが見つかりました 「Microphone(device_index=1)」に「HDA Intel HDMI: 1 (hw:0,7)」という名前のマイクが見つかりました 「Microphone(device_index=2)」に「HDA Intel HDMI: 2 (hw:0,8)」という名前のマイクが見つかりました 「Microphone(device_index=3)」に「Blue Snowball: USB Audio (hw:1,0)」という名前のマイクが見つかりました 「Microphone(device_index=4)」に「hdmi」という名前のマイクが見つかりました 「Microphone(device_index=5)」に「pulse」という名前のマイクが見つかりました 「Microphone(device_index=6)」に「default」という名前のマイクが見つかりました
ここで、Snowball マイクを使用するには、 Microphone()
をMicrophone(device_index=3)
に変更します。
Microphone()
呼び出すと、エラーIOError: No Default Input Device Available
発生します。エラーが示すように、プログラムはどのマイクを使用すればよいかを認識していません。
続行するには、 Microphone(...)
の代わりにMicrophone(device_index=MICROPHONE_INDEX, ...)
を使用するか、OS でデフォルトのマイクを設定します。 MICROPHONE_INDEX
の可能な値は、このエントリのすぐ上にあるトラブルシューティング エントリのコードを使用して取得できます。
PyInstaller バージョン 3.0 では、SpeechRecognition がそのままサポートされています。 PyInstaller を使用してプログラムをコンパイルするときに奇妙な問題が発生する場合は、PyInstaller を更新するだけです。
これは、 pip install --upgrade pyinstaller
実行することで簡単に行うことができます。
「bt_audio_service_open」エラーは、Bluetooth オーディオ デバイスがあることを意味しますが、現在物理デバイスが接続されていないため、実際にはそれを使用できません。Bluetooth マイクを使用していない場合は、これを無視しても問題ありません。接続していて音声が機能していない場合は、マイクが実際に接続されていることを再確認してください。これらのメッセージを無効にする簡単な方法はないようです。
「ALSA lib [...] Unknown PCM」という形式のエラーについては、この StackOverflow の回答を参照してください。基本的に、「不明な PCM カード.pcm.rear」形式のエラーを取り除くには、 /usr/share/alsa/alsa.conf
、 ~/.asoundrc
内のpcm.rear cards.pcm.rear
をコメント アウトするだけです。 /etc/asound.conf
。
「jack サーバーが実行されていないか、起動できません」または「connect(2) /dev/shm/jack-1000/default/jack_0 への呼び出しが失敗しました (err=そのようなファイルまたはディレクトリはありません)」または「サーバーに接続しようとしました」の場合失敗しました」というメッセージが表示された場合、これらは ALSA が JACK に接続しようとしていることが原因であり、無視しても問題ありません。現時点では、マイクの起動中に印刷を完全に無効にする以外に、これらのメッセージをオフにする簡単な方法を知りません。
ChildProcessError
が表示されます。OS X 用 FLAC をソース コードから直接インストールしても、実行可能ファイルが検索パスに正しく追加されないため、機能しません。
Homebrew を使用して FLAC をインストールすると、検索パスが正しく更新されます。まず、Homebrew があることを確認してから、 brew install flac
実行して必要なファイルをインストールします。
このライブラリをハッキングするには、まず「要件」セクションに記載されているすべての要件を満たしていることを確認してください。
speech_recognition/__init__.py
にあります。examples/
ディレクトリの下にあり、デモ スクリプトはspeech_recognition/__main__.py
にあります。speech_recognition/
ディレクトリにあります。reference/
ディレクトリにあります。third-party/
ディレクトリにあります。ライブラリをローカルにインストール/再インストールするには、プロジェクトのルート ディレクトリでpython -m pip install -e .[dev]
を実行します。
リリース前に、バージョン番号はREADME.rst
およびspeech_recognition/__init__.py
に追加されます。次に、 git config gpg.program gpg2 && git config user.signingkey DB45F6C431DE7C2DCD99FF7904882258A4063489 && git tag -s VERSION_GOES_HERE -m "Version VERSION_GOES_HERE"
を使用してバージョン タグが作成されます。
リリースは、 make-release.sh VERSION_GOES_HERE
実行して Python ソース パッケージをビルドし、署名し、PyPI にアップロードすることで実行されます。
すべてのテストを実行するには:
python -m unittest discover --verbose
静的分析を実行するには:
python -m flake8 --ignore=E501,E701,W503 speech_recognition tests examples setup.py
RST が適切な形式であることを確認するには、次のようにします。
python -m rstcheck README.rst reference/ * .rst
テストは、プッシュするたびに GitHub Actions によって自動的に行われます。
付属のflac-win32
実行可能ファイルは、公式 FLAC 1.3.2 32 ビット Windows バイナリです。
付属のflac-linux-x86
およびflac-linux-x86_64
実行可能ファイルは、Manylinux を使用して FLAC 1.3.2 ソース コードから構築されており、さまざまなディストリビューションとの互換性が保証されています。
ビルドされた FLAC 実行可能ファイルはビットごとに再現可能である必要があります。これらを再構築するには、Debian のようなシステムのプロジェクト ディレクトリ内で次のコマンドを実行します。
# download and extract the FLAC source code
cd third-party
sudo apt-get install --yes docker.io
# build FLAC inside the Manylinux i686 Docker image
tar xf flac-1.3.2.tar.xz
sudo docker run --tty --interactive --rm --volume " $( pwd ) :/root " quay.io/pypa/manylinux1_i686:latest bash
cd /root/flac-1.3.2
./configure LDFLAGS=-static # compiler flags to make a static build
make
exit
cp flac-1.3.2/src/flac/flac ../speech_recognition/flac-linux-x86 && sudo rm -rf flac-1.3.2/
# build FLAC inside the Manylinux x86_64 Docker image
tar xf flac-1.3.2.tar.xz
sudo docker run --tty --interactive --rm --volume " $( pwd ) :/root " quay.io/pypa/manylinux1_x86_64:latest bash
cd /root/flac-1.3.2
./configure LDFLAGS=-static # compiler flags to make a static build
make
exit
cp flac-1.3.2/src/flac/flac ../speech_recognition/flac-linux-x86_64 && sudo rm -r flac-1.3.2/
付属のflac-mac
実行可能ファイルは xACT 2.39 から抽出されます。xACT 2.39 は FLAC 1.3.2 のフロントエンドであり、すべてのエンコーダーのバイナリが含まれています。具体的には、 xACT2.39.zip
内のxACT 2.39/xACT.app/Contents/Resources/flac
のコピーです。
ウベリ <[email protected]> (アンソニー・チャン) ボブサイシロール arvindch <[email protected]> (アルビンド・チェンバルプ) kevinismith <[email protected]> (ケビン・スミス) はーす85 DelightRun <[email protected]> 異端者 kamushadenes <[email protected]> (カムス・ハデネス) sbraden <[email protected]> (サラ・ブレイデン) tb0hdan (ボダン・トルキネヴィチ) ティニクス <[email protected]> (スティーブ ドハティ) beeedy <[email protected]> (ブロデリック・カーリン)
バグや提案は Issue Tracker で報告してください。
このライブラリを引用する方法 (APA スタイル):
チャン、A. (2017)。音声認識 (バージョン 3.11) [ソフトウェア]。 https://github.com/Uberi/speech_recognition#readme から入手できます。
このライブラリを引用する方法 (シカゴ スタイル):
チャン、アンソニー。 2017.音声認識(バージョン 3.11)。
また、Python Baidu Yuyin API もチェックしてください。これは、このプロジェクトの古いバージョンに基づいており、Baidu Yuyin のサポートが追加されています。 Baidu Yuyin は中国国内でのみ利用できることに注意してください。
著作権 2014-2017 Anthony Zhang (Uberi)。このライブラリのソース コードは、GitHub でオンラインで入手できます。
SpeechRecognition は、3 条項の BSD ライセンスに基づいて利用可能です。詳細については、プロジェクトのルート ディレクトリにあるLICENSE.txt
参照してください。
便宜上、SpeechRecognition のすべての公式配布物には、必要な著作権表示とライセンスのコピーがすでに含まれています。プロジェクトでは、 SpeechRecognition のライセンス情報が SpeechRecognition README 内にあると簡単に説明し、ユーザーが必要に応じて SpeechRecognition が表示されるようにするだけです。
SpeechRecognition は、CMU Sphinx からソース コード、バイナリ、および言語ファイルを配布します。これらのファイルは BSD ライセンスが付与されており、著作権表示が正しく保持されている限り再配布可能です。個々の部分のライセンスの詳細についてはspeech_recognition/pocketsphinx-data/*/LICENSE*.txt
およびthird-party/LICENSE-Sphinx.txt
を参照してください。
SpeechRecognition は、PyAudio からソース コードとバイナリを配布します。これらのファイルは MIT ライセンスが付与されており、著作権表示が正しく保持されている限り再配布可能です。ライセンスの詳細については、 third-party/LICENSE-PyAudio.txt
を参照してください。
SpeechRecognition は、FLAC からのバイナリ ( speech_recognition/flac-win32.exe
、 speech_recognition/flac-linux-x86
、 speech_recognition/flac-mac
を配布します。これらのファイルは GPLv2 ライセンスが付与されており、GPL の条件が満たされている限り再配布可能です。 FLAC バイナリは個別のプログラムの集合体であるため、これらの GPL 制限はライブラリやライブラリを使用するプログラムには適用されず、FLAC 自体にのみ適用されます。ライセンスの詳細については、 LICENSE-FLAC.txt
参照してください。