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 |
(上に戻る)
-
ROS2の
srcフォルダに移動します.cd ~/colcon_ws/src/
-
本レポジトリをcloneします.
git clone -b humble-devel https://github.com/TeamSOBITS/speech_recognition_nemo.git
-
レポジトリの中へ移動します.
cd speech_recognition_nemo/ -
依存パッケージをインストールします.時間がかかるので注意.
bash install.sh
-
パッケージをコンパイルします.
cd ~/colcon_ws/
colcon build --symlink-install
source ~/colcon_ws/install/setup.sh
(上に戻る)
-
Ubuntuの設定で,サウンドの入力デバイスを使用するマイクに設定する
-
アクションサーバーを起動します.NeMo Server is READY and waiting for requestsと表示されるまでgoalを送らずに待機してください.
ros2 launch speech_recognition_nemo nemo_server.launch.py
-
アクションクライアントを起動します.
- timeout_sec: マイクを開く秒数
- silent_mode: trueのときは検出時と終了時に音がならない
- feedback_rate:
use_feedbackがTrueでvad_nameがNoneのときに返ってくる途中の音声認識結果の頻度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 |
*以下の言語に対応しています.
- 英語: nvidia/parakeet-tdt-0.6b-v2 (デフォルト)
- 日本語: nvidia/parakeet-tdt_ctc-0.6b-ja
- その他: ParakeetやCanaryのサイトを参照
使用言語を英語以外に変更する場合や,他のモデルを使用する場合は以下を実行してください.
-
model_download.pyのmodel_nameを使用するモデル名に書き換えて以下を実行し,モデルをダンロードする.
ros2 run speech_recognition_nemo model_download
-
nemo_server.launch.pyのmodel_nameも同様に,使用するモデル名に書き換えてください.
以下はFeedbackに関するパラメータです.
use_feedbackがTrueのときのみ有効です.
以下の値を変更しても最終認識結果には影響しません.
| パラメータ | 説明 | デフォルト値 |
|---|---|---|
| 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_cancelがTrueのときに有効です.
| パラメータ | 説明 | デフォルト値 |
|---|---|---|
| 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ページ をご覧ください.
(上に戻る)
(上に戻る)