注釈
こんにちは。SunFounder Raspberry Pi & Arduino & ESP32 Facebook 愛好家コミュニティへようこそ! Raspberry Pi、Arduino、ESP32 について、仲間の愛好家と一緒にさらに深く探求しましょう。
参加する理由
専門的なサポート :コミュニティメンバーや公式チームの支援を受けて、購入後の問題や技術的な課題を解決できます。
学びと共有 :ヒントやチュートリアルを交換し、スキルを向上させましょう。
限定先行情報 :新製品の発表やプレビュー情報をいち早く入手できます。
特別割引 :最新製品を対象とした限定割引をお楽しみいただけます。
季節限定プロモーションとプレゼント企画 :プレゼントキャンペーンや祝日限定のプロモーションに参加できます。
👉 私たちと一緒に探求し、創造する準備はできましたか? [here] をクリックして、今すぐ参加しましょう!
3. Vosk で STT(オフライン)
Vosk は軽量な音声認識( STT )エンジンで、多くの言語に対応し、Raspberry Pi 上で完全に オフライン で動作します。言語モデルのダウンロードには最初の 1 回だけインターネット接続が必要です。その後は、ネットワーク接続なしですべてが動作します。
このレッスンでは、次を行います:
Raspberry Pi でマイクを確認する
選択した言語モデルで Vosk をインストールしてテストする
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 ~/fusion-hat/examples sudo python3 stt_vosk_stream.py
新しい言語でこのコードを初めて実行すると、Vosk は次を行います:
言語モデルを自動的にダウンロード します(デフォルトでは small 版)。
対応言語の一覧を表示 します。
マイクからの音声入力の 待受( listening ) を開始します。
ターミナルには次のような表示が出ます:
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)がダウンロードされました。対応言語の一覧が表示されました。
システムは現在待受中です — Fusion HAT+ のマイクに向かって話すと、認識されたテキストがターミナルに表示されます。
ヒント:
精度を上げるため、マイクは 15~30 cm 程度の距離に保ってください。
言語とアクセントに合ったモデル を選択してください。
静かな環境で使用すると認識が向上します。
コード
from fusion_hat.stt import Vosk as STT
stt = STT(language="en-us")
while True:
print("Say something")
for result in stt.listen(stream=True):
if result["done"]:
print(f"final: {result['final']}")
else:
print(f"partial: {result['partial']}", end="\r", flush=True)
コードの説明:
stt.listen(stream=True)— 音声認識のストリーミングを開始し、話している間は中間結果を返します。result["partial"]— リアルタイムの認識テキスト を表示します(継続的に更新されます)。result["final"]— 話し終えたときに 最終的に認識された文 を表示します。ループは継続的に動作し、 ハンズフリーのリアルタイム文字起こし が可能になります。
ヒント:このストリーミングモードは、 音声アシスタント 、 コマンド操作 、または ライブ文字起こし に最適です。
トラブルシューティング
No such file or directory( `arecord` 実行時)
card/device の番号が間違っている可能性があります。次を実行します:
arecord -lそして、
1,0を USB マイクに表示された番号に置き換えてください。録音ファイルに音が入っていない
ミキサーを開き、マイク音量を確認します:
alsamixer
F6 を押して USB マイクを選択します。
Mic/Capture がミュートになっていないことを確認します( [MM] ではなく [OO] )。
↑ キーでレベルを上げます。
Vosk が音声を認識しない
言語コード がモデルと一致していることを確認してください(例:英語は
en-us、中国語はzh-cn)。マイクは 15~30 cm 離し、背景ノイズを避けてください。
はっきり、ゆっくり話してください。
遅延が大きい/認識が遅い
デフォルトの自動ダウンロードは small モデル です(高速ですが、精度は低めです)。
それでも遅い場合は、他のプログラムを閉じて CPU を空けてください。