Skip to content

TeamSOBITS/speech_recognition_nemo

Repository files navigation

JA | EN

Contributors Forks Stargazers Issues License

Speech Recognition NeMo

目次
  1. 概要
  2. セットアップ
  3. 実行・操作方法
  4. パラメータ
  5. 録音された音声について
  6. マイルストーン
  7. 参考文献

概要

Speech Recognition NeMoは,NeMo Frameworkの自動音声認識(ASR)機能をROS2のアクション通信に対応させたものです.高速で高精度な音声認識を提供します.

GPUを搭載したPCでの使用を推奨します.

NVIDIA NeMo Frameworkは,大規模言語モデル(LLM),マルチモーダルモデル(MM),自動音声認識(ASR),テキスト読み上げ(TTS),そしてコンピュータービジョン(CV)の分野に取り組む研究者やPyTorch開発者向けに構築された,スケーラブルでクラウドネイティブな生成AIフレームワークです.

(上に戻る)

セットアップ

ここで,本レポジトリのセットアップ方法について説明します.

(上に戻る)

環境条件

まず,以下の環境を整えてから,次のインストール方法に進んでください.

System Version
Ubuntu 22.04 (Jammy Jellyfish)
ROS Humble Hawksbill
Python 3.10

(上に戻る)

インストール方法

  1. ROS2のsrcフォルダに移動します.

    cd ~/colcon_ws/src/
  2. 本レポジトリをcloneします.

    git clone -b humble-devel https://github.com/TeamSOBITS/speech_recognition_nemo.git
  3. レポジトリの中へ移動します.

    cd speech_recognition_nemo/
  4. 依存パッケージをインストールします.時間がかかるので注意.

    bash install.sh
  5. パッケージをコンパイルします.

    cd ~/colcon_ws/
    colcon build --symlink-install
    source ~/colcon_ws/install/setup.sh

(上に戻る)

実行・操作方法

  1. Ubuntuの設定で,サウンドの入力デバイスを使用するマイクに設定する

  2. アクションサーバーを起動します.NeMo Server is READY and waiting for requestsと表示されるまでgoalを送らずに待機してください.

    ros2 launch speech_recognition_nemo nemo_server.launch.py 
  3. アクションクライアントを起動します.

  • timeout_sec: マイクを開く秒数
  • silent_mode: trueのときは検出時と終了時に音がならない
  • feedback_rate: use_feedbackTruevad_nameNoneのときに返ってくる途中の音声認識結果の頻度
    ros2 action send_goal /speech_recognition sobits_interfaces/action/SpeechRecognition "timeout_sec: 5 
    silent_mode: false
    feedback_rate: 0.5" -f

録音された音声はsound_fileディレクトリに保存されます.

(上に戻る)

パラメータ

nemo_server.launch.pyでは以下のパラメータを指定できます.

パラメータ 説明 デフォルト値
model_name 音声認識モデルの名前 * nvidia/parakeet-tdt-0.6b-v2
mic_volume マイクの入力音量をパーセンテージで設定する.プログラム終了後は元の音量に戻る.例: "150" ""
use_feedback Feedbackを使用するかどうか True

*以下の言語に対応しています.

使用言語を英語以外に変更する場合や,他のモデルを使用する場合は以下を実行してください.

  1. model_download.pymodel_nameを使用するモデル名に書き換えて以下を実行し,モデルをダンロードする.

    ros2 run speech_recognition_nemo model_download
  2. nemo_server.launch.pymodel_nameも同様に,使用するモデル名に書き換えてください.


以下はFeedbackに関するパラメータです. use_feedbackTrueのときのみ有効です. 以下の値を変更しても最終認識結果には影響しません.

パラメータ 説明 デフォルト値
vad_name フィードバックの際に使用する音声アクティビティ検出(VAD)の手法.VADの使用によりフィードバックの認識精度が向上する.Noneを選択するとVADを使用せずAction Clientで指定したFeedback Rateの秒数ごとに音声認識を行う. ten_vad
hop_size VADモデルが音声データを処理するチャンク(断片)のサイズ.160 or 256を選択可能.値が小さいほど応答性が上がるが,CPU負荷が増える 256
threshold VADモデルが音声を検出するための確率のしきい値.値を高くすると誤検出が減るが,かすれた声や小さな声が無視される可能性がある 0.5
min_wipe_duration ノイズを無視し音声認識するために必要な声の最短の長さ.VADが発話と認識した区間がこの秒数より短い場合,ノイズとして無視され音声認識の処理を行わない. 0.2
extra_audio_duration_sec フィードバックごとに音声の前後に含める追加のオーディオ時間 0.2

以下はエコーキャンセルに関するパラメータです. use_echo_cancelTrueのときに有効です.

パラメータ 説明 デフォルト値
use_echo_cancel エコーキャンセルを使用するかどうか False
noise_suppression ノイズを抑制する. False
analog_gain_control マイクのハードウェアレベルで入力音量を自動調整する.大きな音は抑え,小さな音は増幅することで音割れや聞き取りにくさを防ぐ. False
digital_gain_control マイクのソフトウェアレベルで入力音量を自動調整する. False
  • model_name, use_feedback, vad_nameとエコーキャンセル関連以外のパラメータはlaunchファイル起動後でも変更可能です.
    • 例:min_wipe_durationを0.1に変更する場合
      ros2 param set /nemo_asr_action_server min_wipe_duration 0.1

(上に戻る)

マイルストーン

現時点のバッグや新規機能の依頼を確認するためにIssueページ をご覧ください.

(上に戻る)

参考文献

(上に戻る)

About

Speech to text, ASR

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 2

  •  
  •