注釈
こんにちは、SunFounderのRaspberry Pi & Arduino & ESP32愛好家コミュニティへようこそ!Facebook上でRaspberry Pi、Arduino、ESP32についてもっと深く掘り下げ、他の愛好家と交流しましょう。
参加する理由は?
エキスパートサポート:コミュニティやチームの助けを借りて、販売後の問題や技術的な課題を解決します。
学び&共有:ヒントやチュートリアルを交換してスキルを向上させましょう。
独占的なプレビュー:新製品の発表や先行プレビューに早期アクセスしましょう。
特別割引:最新製品の独占割引をお楽しみください。
祭りのプロモーションとギフト:ギフトや祝日のプロモーションに参加しましょう。
👉 私たちと一緒に探索し、創造する準備はできていますか?[here]をクリックして今すぐ参加しましょう!
16. Vosk を使った STT(オフライン)
Vosk は、軽量な音声認識(STT)エンジンで、多くの言語をサポートし、Raspberry Pi 上で完全に オフライン で動作します。 最初に一度だけ言語モデルをダウンロードすれば、その後はネット接続なしで利用可能です。
このレッスンでは以下を行います:
Raspberry Pi 上のマイクの動作確認
選択した言語モデルで Vosk をインストール&テスト
始める前に
以下を完了していることを確認してください:
すべてのモジュールをインストールする(重要) —
robot-hat、vilib、pidogモジュールをインストールし、スクリプトi2samp.shを実行します。
1. マイクの確認
音声認識を使う前に、USB マイクが正しく動作しているか確認します。
使用可能な録音デバイスを一覧表示:
arecord -lcard 1: ... device 0のような行を探します。短い音声を録音(
1,0は取得したカード番号とデバイス番号に置き換え):arecord -D plughw:1,0 -f S16_LE -r 16000 -d 3 test.wav
例:デバイスが
card 2, device 0の場合:arecord -D plughw:2,0 -f S16_LE -r 16000 -d 3 test.wav
再生して録音を確認:
aplay test.wavマイクの音量調整:
alsamixer
F6 を押して USB マイクを選択
Mic または Capture チャンネルを探す
ミュート状態でないことを確認( [MM] はミュート、
Mキーで解除 → [OO] にする)↑ / ↓ で録音音量を調整
2. Vosk のテスト
手順:
新しいファイルを作成:
cd ~/pidog/examples sudo nano test_stt_vosk.py
以下のコードをコピー&貼り付けし、
Ctrl+X→Y→Enterで保存します。from pidog.stt import Vosk vosk = Vosk(language="en-us") print(vosk.available_languages) while True: print("Say something") result = vosk.listen(stream=False) print(result)
プログラムを実行:
sudo python3 test_stt_vosk.py
初回実行時、新しい言語を使用する場合は Vosk が自動的に 言語モデルをダウンロード します(デフォルトでは small バージョン)。 その後、対応言語の一覧が表示されます:
vosk-model-small-en-us-0.15.zip: 100%|███████████████████| 39.3M/39.3M [00:05<00:00, 7.85MB/s] ['ar', 'ar-tn', 'ca', 'cn', 'cs', 'de', 'en-gb', 'en-in', 'en-us', 'eo', 'es', 'fa', 'fr', 'gu', 'hi', 'it', 'ja', 'ko', 'kz', 'nl', 'pl', 'pt', 'ru', 'sv', 'te', 'tg', 'tr', 'ua', 'uz', 'vn'] Say something
これが表示されれば:
モデルファイル(
vosk-model-small-en-us-0.15)がダウンロード完了対応言語の一覧が表示される
システムが音声認識を待機中 — マイクに話しかけると認識結果がターミナルに表示されます
ヒント:
マイクは 15〜30 cm 程度離すと良いです。
使用する言語と発音に合ったモデルを選びましょう。
ストリーミングモード(オプション)
音声を話しながらリアルタイムで部分的な認識結果を確認することも可能です:
from pidog.stt import Vosk
vosk = Vosk(language="en-us")
while True:
print("Say something")
for result in vosk.listen(stream=True):
if result["done"]:
print(f"final: {result['final']}")
else:
print(f"partial: {result['partial']}", end="\r", flush=True)
トラブルシューティング
`arecord` 実行時に「No such file or directory」と表示される
カード/デバイス番号が間違っている可能性があります。 以下を実行し:
arecord -lUSB マイクに対応する番号に
1,0を置き換えてください。録音ファイルに音が入っていない
ミキサーを開いてマイク音量を確認します:
alsamixer
F6 を押して USB マイクを選択
Mic / Capture がミュートではないことを確認([OO] になっている必要があります。[MM] の場合は
Mで解除)↑ で音量を上げます
Vosk が音声を認識しない
言語コードがモデルと一致しているか確認(例:英語は
en-us、中国語はzh-cn)マイクとの距離を 15〜30cm に保ち、周囲の雑音を減らします
はっきり、ゆっくりと話します
認識が遅い/反応が悪い
デフォルトでは small モデル を自動ダウンロードします(高速ですが精度は低め)
それでも遅い場合は、他のプログラムを終了して CPU を確保してください