注釈

こんにちは。SunFounder Raspberry Pi & Arduino & ESP32 Facebook 愛好家コミュニティへようこそ! Raspberry Pi、Arduino、ESP32 について、仲間の愛好家と一緒にさらに深く探求しましょう。

参加する理由

  • 専門的なサポート :コミュニティメンバーや公式チームの支援を受けて、購入後の問題や技術的な課題を解決できます。

  • 学びと共有 :ヒントやチュートリアルを交換し、スキルを向上させましょう。

  • 限定先行情報 :新製品の発表やプレビュー情報をいち早く入手できます。

  • 特別割引 :最新製品を対象とした限定割引をお楽しみいただけます。

  • 季節限定プロモーションとプレゼント企画 :プレゼントキャンペーンや祝日限定のプロモーションに参加できます。

👉 私たちと一緒に探求し、創造する準備はできましたか? [here] をクリックして、今すぐ参加しましょう!

3. Vosk で STT(オフライン)

Vosk は軽量な音声認識( STT )エンジンで、多くの言語に対応し、Raspberry Pi 上で完全に オフライン で動作します。言語モデルのダウンロードには最初の 1 回だけインターネット接続が必要です。その後は、ネットワーク接続なしですべてが動作します。

このレッスンでは、次を行います:

  • Raspberry Pi でマイクを確認する

  • 選択した言語モデルで Vosk をインストールしてテストする

1. マイクを確認する

音声認識を使用する前に、USB マイクが正しく動作していることを確認してください。

  1. 利用可能な録音デバイスを一覧表示します:

    arecord -l
    

    card 1: ... device 0 のような行を探してください。

  2. 短いサンプルを録音します( 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
    
  3. 再生して録音を確認します:

    aplay test.wav
    
  4. 必要に応じてマイク音量を調整します:

    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 を空けてください。