最終更新:2024-11-30 (土) 07:23:59 (8d)
Module LLM/マイク
Top / Module LLM / マイク
ALSAでアクセスすると音声がおかしい問題
- Module LLM/マイクのALSAデバイスの挙動がおかしいので対策
確認
- arecord -l?
- arecord -L
- arecord -D hw:0,0 --dump-hw-params
初期ファーム?
- https://x.com/devemin/status/1853944952205803886
- arecord -D plughw:0,0 -f S24_LE -r 24000 mic2.wav にすると録音できたらしい
M5_LLM_ubuntu22_04_20241115.axpのテスト用ファーム
cat /proc/asound/pcm 00-00: 6051000.i2s_slv-actt 23f2000.audio_codec-0 : 6051000.i2s_slv-actt 23f2000.audio_codec-0 : capture 1 00-01: 6050000.i2s_mst-actt 23f2000.audio_codec-1 : 6050000.i2s_mst-actt 23f2000.audio_codec-1 : playback 1
- このファームだと下記だとノイズになる
arecord -D plughw:0,0 -f S24_LE -r 24000 mic2.wav
- arecord
- 試した感じ44.1kはNG (Unable to install hw params)
arecord -D hw:0,0 -f S16_LE -c 2 -r 8000 (~48000) mic2.wav 1/2の再生速度になっている (8~48kHz) arecord -D hw:0,0 -f S24_LE -c 2 -r 8000 (~48000) mic2.wav ノイズ (8~48kHz) arecord -D hw:0,0 -f S32_LE -c 2 -r 8000 (~48000) mic2.wav OK (8~48kHz)
- 試した感じ44.1kはNG (Unable to install hw params)
- snd_pcm_hw_params_set_format(SND_PCM_FORMAT_S16_LE)ときは指定した2倍のデータをsnd_pcm_readi()で取得してしまっている模様 (S32_LEのときはOK)
- arecordで録音時下データの場合、WAVEのヘッダを修正すれば再生できるらしいと教えてもらったが、基本はAxeraのAX AUDIO APIで音声取得するのが正攻法らしい
- https://x.com/HanxiaoM/status/1862455344288735508
メモ
- スピーカーのボリュームANA GAINらしい
- systemctl stop llm-audio?
正攻法の取得方法
- ノイズキャンセリング周りでALSAにバグがあるけどワークアラウンドがStackFlowに実装してあるらしい
- arecord用のワークアラウンドはあるが、AxeraのAX AUDIO APIで音声取得するほうが良さそう
AX AUDIO API
- StackFlowのModule LLM/llm-audioが参考になりそう
Module LLM/llm-audioからZeroMQ経由で取得
- Module LLM/llm-kws?とかModule LLM/llm-asr?のコードが参考になる・・?
- Module LLM/llm-audioではAX AUDIO APIを使っている模様