bobchin
2022年10月27日 7時48分
いつもお世話になっております。
市橋ともうします。
Armadillo 640 にてUSBオーディオアダプタを使用し、
ヘッドセットを接続して会話をしたいと考えています。
https://armadillo.atmark-techno.com/blog/615/4086
上記を参考にしてカーネルをビルドしてUSBオーディオが使用できることを確認しました。
USBオーディオアダプタは、エレコムのUSB-AADC02BKを使用しています。
arecord -D plughw:0,0 -f S16_LE -r 44100 -c 1 | aplay -f S16_LE -r 44100 -c 1
テストとして上記のようにマイク音声をヘッドホンで聞くようにしました。
数ミリ秒ほど遅延して聞こえますが、許容範囲のため問題ないと思っていましたが、
この状態を数時間続けていると遅延が数秒ほどまで拡大してしまいます。
以下arecordの引数で試してみましたが回避できませんでした。
・ -Mオプション追加
・ -Bオプションで0~1000000まで
・ -tオプションでwav, raw
・ -cオプションで 1 or 2
・ -rオプションで44100, 16000
・ --period-size=0
・ --buffer-size=0
また、USBオーディオアダプタを違うものに変えても回避できませんでした。
他に見るところがあるでしょうか?何か情報があればと思います。
コメント
bobchin
市橋です。
佐藤様ご返信ありがとうございます。
> aplay/arecord共に、 -N, --nonblock オプションを付けてみるどどうでしょうか。
> (おそらく遅延はユーザランド側で発生しているのでもしかしたら効果ないかもしれません。)
-Nオプションも試してみましたが回避できませんでした。
> > ・ --period-size=0
> > ・ --buffer-size=0
> また、上記の引数は、arecord の方だけに付けてみたのでしょうか。
> そうであれば、aplay の方にも付けてみてください。
arecord側だけでしたので、aplay側にも付けてみましたが、
遅延の回避はできませんでした。
以上よろしくお願いいたします。
at_makoto.sato
佐藤です。
以下のカーネルコンフィグを有効にしたカーネルイメージを作成してA640に入れるとどうでしょうか。
[ATDE ~/linux-v4.14-at[version]]$ make ARCH=arm armadillo-640_defconfig [ATDE ~/linux-v4.14-at[version]]$ make ARCH=arm menuconfig Device Drivers ---> [*] Sound card support ---> [*] Advanced Linux Sound Architecture ---> [*] Generic sound devices ---> [*] Generic loopback driver (PCM) <-- スペースキーを押して有効[*]にする
カーネルのビルド方法と書き換え方法については以下を参照してください。
https://manual.atmark-techno.com/armadillo-640/armadillo-640_product_ma…
https://manual.atmark-techno.com/armadillo-640/armadillo-640_product_ma…
bobchin
at_makoto.sato
佐藤です。
もし、arecord/aplay を使用することに特にこだわりがないのであれば、
以下のように gstreamer を使用する方法もあります。
[armadillo]# apt install pulseaudio gstreamer1.0-pulseaudio gstreamer1.0-plugins-bad \ libgstreamer-plugins-bad1.0-0 gstreamer1.0-plugins-base libgstreamer-plugins-base1.0-0 \ gstreamer1.0-plugins-good libgstreamer1.0-0 gstreamer1.0-tools [armadillo]# pulseaudio --start --exit-idle-time=-1 [armadillo]# gst-launch-1.0 pulsesrc ! autoaudiosink
これであれば、カーネルのループバックを有効にしなくても遅延なく聞こえると思います。
at_makoto.sato
2022年10月27日 13時30分
佐藤です。
> また、USBオーディオアダプタを違うものに変えても回避できませんでした。
> 他に見るところがあるでしょうか?何か情報があればと思います。
aplay/arecord共に、 -N, --nonblock オプションを付けてみるどどうでしょうか。
(おそらく遅延はユーザランド側で発生しているのでもしかしたら効果ないかもしれません。)
> ・ --period-size=0
> ・ --buffer-size=0
また、上記の引数は、arecord の方だけに付けてみたのでしょうか。
そうであれば、aplay の方にも付けてみてください。