dusty-nv / jetson-containers

Machine Learning Containers for NVIDIA Jetson and JetPack-L4T
MIT License
2.18k stars 446 forks source link

Unable to play audio from in the Docker #484

Open bryanhughes opened 5 months ago

bryanhughes commented 5 months ago

I successfully built a custom docker which included me creating a custom package where I needed to install the dependencies for the application that I am writing. After much trials this works great and everything is good.

My problem is that I am mounting my code base into the docker to run and develop my application. It uses pyaudio to record and playback audio from the attached Anker PowerConf S3 mic/speaker. This all works perfectly on the host but doesnt in the docker.

I can record audio and do a speaker-test with no problems, just playing back the audio doesnt work. I get

# arecord -f S16_LE -c 1 -d 10 -r 48000 --device="hw:2,0" /tmp/test-mic.wav
Recording WAVE '/tmp/test-mic.wav' : Signed 16 bit Little Endian, Rate 48000 Hz, Mono

# aplay /tmp/test-mic.wav 
aplay: main:831: audio open error: No such file or directory

# ll /tmp/test-mic.wav 
-rw-r--r-- 1 root root 960044 Apr 18 19:57 /tmp/test-mic.wav

I found this solution, but it didnt work for me:

https://forums.developer.nvidia.com/t/how-to-access-usb-speaker-from-within-a-docker-container/231737

Here is my custom run script:

./jetson-containers run --volume /mnt/nvme/git/mimzy:/opt/mimzy --device /dev/snd --device /dev/bus/usb --volume /etc/timezone:/etc/timezone:ro --volume /etc/localtime:/etc/localtime:ro mimzy:r36.2.0
dusty-nv commented 5 months ago

@bryanhughes jetson-containers run (aka run.sh) already mounts the /dev/snd and /dev-bus/usb audio devices:

https://github.com/dusty-nv/jetson-containers/blob/4c4d7424c3b4d53b916ec2f20ebda222f3fd82b0/run.sh#L65

Strangely I have the same Anker PowerConf usb and it works through pyaudio both for mic and speaker inside docker.... With USB devices, you also need to have them plugged in before you start the container.

Have you listed the audio devices inside container with a script like this?

https://github.com/dusty-nv/jetson-containers/blob/master/packages/audio/riva-client/list_audio_devices.py

ms1design commented 5 months ago

Oh how nice, I'm on the same stage as @bryanhughes right now with my Anker S330 and Home Assistant containers :D

bryanhughes commented 5 months ago

https://github.com/dusty-nv/jetson-containers/blob/master/packages/audio/riva-client/list_audio_devices.py

@dusty-nv I have which corroborates what aplay -l shows

AUDIO DEVICES:

 0: NVIDIA Jetson AGX Orin HDA: HDMI 1 (hw:0,7)        (inputs=0   outputs=8   sampleRate=44100)
 1: NVIDIA Jetson AGX Orin HDA: HDMI 2 (hw:0,8)        (inputs=0   outputs=8   sampleRate=44100)
 2: NVIDIA Jetson AGX Orin HDA: HDMI 3 (hw:0,9)        (inputs=0   outputs=8   sampleRate=44100)
 3: NVIDIA Jetson AGX Orin APE: - (hw:1,0)             (inputs=16  outputs=16  sampleRate=44100)
 4: NVIDIA Jetson AGX Orin APE: - (hw:1,1)             (inputs=16  outputs=16  sampleRate=44100)
 5: NVIDIA Jetson AGX Orin APE: - (hw:1,2)             (inputs=16  outputs=16  sampleRate=44100)
 6: NVIDIA Jetson AGX Orin APE: - (hw:1,3)             (inputs=16  outputs=16  sampleRate=44100)
 7: NVIDIA Jetson AGX Orin APE: - (hw:1,4)             (inputs=16  outputs=16  sampleRate=44100)
 8: NVIDIA Jetson AGX Orin APE: - (hw:1,5)             (inputs=16  outputs=16  sampleRate=44100)
 9: NVIDIA Jetson AGX Orin APE: - (hw:1,6)             (inputs=16  outputs=16  sampleRate=44100)
10: NVIDIA Jetson AGX Orin APE: - (hw:1,7)             (inputs=16  outputs=16  sampleRate=44100)
11: NVIDIA Jetson AGX Orin APE: - (hw:1,8)             (inputs=16  outputs=16  sampleRate=44100)
12: NVIDIA Jetson AGX Orin APE: - (hw:1,9)             (inputs=16  outputs=16  sampleRate=44100)
13: NVIDIA Jetson AGX Orin APE: - (hw:1,10)            (inputs=16  outputs=16  sampleRate=44100)
14: NVIDIA Jetson AGX Orin APE: - (hw:1,11)            (inputs=16  outputs=16  sampleRate=44100)
15: NVIDIA Jetson AGX Orin APE: - (hw:1,12)            (inputs=16  outputs=16  sampleRate=44100)
16: NVIDIA Jetson AGX Orin APE: - (hw:1,13)            (inputs=16  outputs=16  sampleRate=44100)
17: NVIDIA Jetson AGX Orin APE: - (hw:1,14)            (inputs=16  outputs=16  sampleRate=44100)
18: NVIDIA Jetson AGX Orin APE: - (hw:1,15)            (inputs=16  outputs=16  sampleRate=44100)
19: NVIDIA Jetson AGX Orin APE: - (hw:1,16)            (inputs=16  outputs=16  sampleRate=44100)
20: NVIDIA Jetson AGX Orin APE: - (hw:1,17)            (inputs=16  outputs=16  sampleRate=44100)
21: NVIDIA Jetson AGX Orin APE: - (hw:1,18)            (inputs=16  outputs=16  sampleRate=44100)
22: NVIDIA Jetson AGX Orin APE: - (hw:1,19)            (inputs=16  outputs=16  sampleRate=44100)
23: PowerConf S3: USB Audio (hw:2,0)                   (inputs=1   outputs=2   sampleRate=48000)

Unfortunately when trying to play an audio I get:

# aplay mimzy-1.wav 
aplay: main:831: audio open error: No such file or directory

My current approach is to debug by getting aplay to work from the command line in the running docker.

dusty-nv commented 5 months ago

@bryanhughes try aplay --device "hw:2,0" mimzy-1.wav

bryanhughes commented 5 months ago

@dusty-nv Thanks but sadly no love...

# aplay --device "hw:2,0" mimzy-1.wav
Playing WAVE 'mimzy-1.wav' : Signed 16 bit Little Endian, Rate 22050 Hz, Mono
aplay: set_params:1358: Channels count non available

Googling the message looks like it leads down the path of modifying the alsa config, which I did once upon a time and ended up screwing up my system. Just to clarify, aplay works fine on the host.

bryanhughes commented 5 months ago

Also, this works:

speaker-test -f S16_LE -c 2 -d 10 -r 48000 --device="hw:2,0"

Grasping at straws, this DOES NOT work:

# aplay -f S16_LE -c 2 -d 10 -r 48000 --device="hw:2,0" mimzy-1.wav
Playing WAVE 'mimzy-1.wav' : Signed 16 bit Little Endian, Rate 22050 Hz, Mono
aplay: set_params:1358: Channels count non available
ms1design commented 5 months ago

This is somewhat related with my issues with wyoming-assist-microphone container here: https://github.com/dusty-nv/jetson-containers/pull/481

DEBUG:root:Connected to mic service
arecord: main:831: audio open error: No such file or directory
WARNING:root:Mic service disconnected

@bryanhughes

On my Orin with same Anker I faced this:

narandill@ubuntu:~$ aplay -D hw:2,0 cap.wav
Playing WAVE 'cap.wav' : Signed 16 bit Little Endian, Rate 48000 Hz, Stereo
aplay: set_params:1352: Sample format non available
Available formats:
- S24_3LE

did you tried sox mimzy-1.wav -b 24 -c 2 -r 48000 mimzy-1-converted.wav ?

bryanhughes commented 5 months ago

@ms1design Thanks for you help! Unfortunately I still get:

# aplay mimzy-1-converted.wav 
aplay: main:831: audio open error: No such file or directory

When I do:

aplay --device="hw:2,0"  mimzy-1-converted.wav 
aplay: main:831: audio open error: Device or resource busy

This is because The PowerConf is current the default device on the host set in Settings (I am on the desktop). When I switch the host default output to the HDMI speaker in the monitor, I get the following on the original and converted:

# aplay --device="hw:2,0" mimzy-1.wav 
Playing WAVE 'mimzy-1.wav' : Signed 16 bit Little Endian, Rate 22050 Hz, Mono
aplay: set_params:1358: Channels count non available

# aplay --device="hw:2,0" mimzy-1-converted.wav
Playing WAVE 'mimzy-1-converted.wav' : Signed 24 bit Little Endian in 3bytes, Rate 48000 Hz, Stereo
aplay: set_params:1352: Sample format non available
Available formats:
- S16_LE

So the same as you...

I tried adding -f S16_LE but no difference. Stranger and stranger.

EDITED: To note, I now get the same thing on the host:

$ aplay -f S16_LE --device="hw:2,0" mimzy-1-converted.wav
Warning: format is changed to S24_3LE
Playing WAVE 'mimzy-1-converted.wav' : Signed 24 bit Little Endian in 3bytes, Rate 48000 Hz, Stereo
aplay: set_params:1352: Sample format non available
Available formats:
- S16_LE
bryanhughes commented 5 months ago

More information trying out speaker-test. When the PowerConf is set as the default output on the host through Settings, I can generate the test sound. When I change the default to the HDMI monitor speaker on the host through Settings, and then try to run the speaker test specifying the device:

$ speaker-test --device="hw:2,0"

speaker-test 1.2.6

Playback device is hw:2,0
Stream parameters are 48000Hz, S16_LE, 1 channels
Using 16 octaves of pink noise
Channels count (1) not available for playbacks: Invalid argument
Setting of hwparams failed: Invalid argument

It doesnt work on the host, so at least the host and the docker are failing in the same way when specifying the device.

Also, when the PowerConf is set as the default it works.

ms1design commented 5 months ago

That's interesting, @bryanhughes 🤔 I've finished enabling CUDA support for the wyoming-piper wrapper for the piper-tts container. Now, I can experiment with a setup similar to yours (Orin, Anker S330, containers, etc.). Did you modify your ALSA configuration this time?

bryanhughes commented 5 months ago

@ms1design I did not modify the ALSA configuration. What I am doing is creating a custom container with just nano_llm, whisper, and piper-tts. I can confirm that

$ speaker-test -f S16_LE -c 1 -d 10 -r 48000 --device="hw:2,0"

speaker-test 1.2.6

Playback device is hw:2,0
Stream parameters are 48000Hz, S16_LE, 1 channels
Using 16 octaves of pink noise
Channels count (1) not available for playbacks: Invalid argument
Setting of hwparams failed: Invalid argument

Fails on both the host and in the container. Using aplay has the same results in the container as on the host when I specify the device:

$ aplay --device="hw:2,0" test-mic.wav 
Playing WAVE 'test-mic.wav' : Signed 16 bit Little Endian, Rate 48000 Hz, Mono
aplay: set_params:1358: Channels count non available

Also, when I set the default output to the PowerConf S3 through the desktop settings, aplay works on the host, outputting sound through the S3, but not in the container where I get:

# aplay test-mic.wav
aplay: main:831: audio open error: No such file or directory

Now, when I keep the default output through the desktop settings, and go back to the container and try aplay again specifying the device, I get Device or resource busy:

# aplay --device="hw:2,0" test-mic.wav 
aplay: main:831: audio open error: Device or resource busy
bryanhughes commented 5 months ago

Just an Update: I added riva-client to my custom build, to see if maybe there was some magic there, and it is also crapping out when I run the llama speaks demo. I am thinking that maybe my Orin AGX may be the problem.

bryanhughes commented 5 months ago

So I am deep down the rabbit hole. It is clear this issue is not related to Docker, but to my host system, which I just re-flashed. Here is the updated information I posted in the Jetson Developer Forum:

https://forums.developer.nvidia.com/t/how-to-access-usb-speaker-from-within-a-docker-container/290183/4

dusty-nv commented 5 months ago

@bryanhughes @ms1design given the problems you were having, just went through this and found aplay doesn't like it when the wav file is mono and output device is stereo, because hw devices won't do format conversion or resampling for you:

https://forums.developer.nvidia.com/t/how-to-access-usb-speaker-from-within-a-docker-container/290183/6?u=dusty_nv

Don't believe it is related to Jetson, or your device needing re-flashed. The alsa-utils are cryptic to use and if you are developing for Python I would just use PyAudio.

bryanhughes commented 5 months ago

@dusty-nv Thank you. I will let you know the progress. I know more about alsa than I ever wanted to and am just realizing this. There are so many red-herrings doh!

bryanhughes commented 5 months ago

@dusty-nv Just an update. I decided to take a step back and just see if the llama speaks demo runs, which it sort of does. The TTS part works but the ASR didnt, which I realize is because the Riva server needs to be started first. I decided to switch to the whisper ASR but unfortunately looks like the code is hardwired to riva:

Traceback (most recent call last):
  File "/usr/lib/python3.10/runpy.py", line 196, in _run_module_as_main
    return _run_code(code, main_globals, None,
  File "/usr/lib/python3.10/runpy.py", line 86, in _run_code
    exec(code, run_globals)
  File "/opt/NanoLLM/nano_llm/agents/web_chat.py", line 150, in <module>
    agent = WebChat(**vars(args))
  File "/opt/NanoLLM/nano_llm/agents/web_chat.py", line 30, in __init__
    super().__init__(**kwargs)
  File "/opt/NanoLLM/nano_llm/agents/voice_chat.py", line 38, in __init__
    self.asr = AutoASR.from_pretrained(asr=asr, **kwargs) 
  File "/opt/NanoLLM/nano_llm/plugins/audio/auto_asr.py", line 41, in from_pretrained
    raise ValueError(f"ASR model type should be 'riva'")
ValueError: ASR model type should be 'riva'

From the documentation, it looks like Riva is built into the container, but not super clear on how to start it, and then start llama speaks.

ms1design commented 5 months ago

@dusty-nv @bryanhughes Now I'm happy that I spent that weekend resting rather than deep diving into ALSA :D

Testing compatibility

First thing I did was just test using wyoming-assist-microphone container – what output I get on host Orin / docker run / docker-compose when issuing below commands:

host – ✅ Mic/Speaker detected / working as expected

aplay -L on host

```bash narandill@ubuntu:~$ aplay -L null Discard all samples (playback) or generate zero samples (capture) samplerate Rate Converter Plugin Using Samplerate Library speexrate Rate Converter Plugin Using Speex Resampler jack JACK Audio Connection Kit oss Open Sound System pulse PulseAudio Sound Server upmix Plugin for channel upmix (4,6,8) vdownmix Plugin for channel downmix (stereo) with a simple spacialization default Playback/recording through the PulseAudio sound server demixer hw:CARD=HDA,DEV=3 NVIDIA Jetson AGX Orin HDA, HDMI 0 Direct hardware device without any conversions hw:CARD=HDA,DEV=7 NVIDIA Jetson AGX Orin HDA, HDMI 1 Direct hardware device without any conversions hw:CARD=HDA,DEV=8 NVIDIA Jetson AGX Orin HDA, HDMI 2 Direct hardware device without any conversions hw:CARD=HDA,DEV=9 NVIDIA Jetson AGX Orin HDA, HDMI 3 Direct hardware device without any conversions plughw:CARD=HDA,DEV=3 NVIDIA Jetson AGX Orin HDA, HDMI 0 Hardware device with all software conversions plughw:CARD=HDA,DEV=7 NVIDIA Jetson AGX Orin HDA, HDMI 1 Hardware device with all software conversions plughw:CARD=HDA,DEV=8 NVIDIA Jetson AGX Orin HDA, HDMI 2 Hardware device with all software conversions plughw:CARD=HDA,DEV=9 NVIDIA Jetson AGX Orin HDA, HDMI 3 Hardware device with all software conversions hdmi:CARD=HDA,DEV=0 NVIDIA Jetson AGX Orin HDA, HDMI 0 HDMI Audio Output hdmi:CARD=HDA,DEV=1 NVIDIA Jetson AGX Orin HDA, HDMI 1 HDMI Audio Output hdmi:CARD=HDA,DEV=2 NVIDIA Jetson AGX Orin HDA, HDMI 2 HDMI Audio Output dmix:CARD=HDA,DEV=3 NVIDIA Jetson AGX Orin HDA, HDMI 0 Direct sample mixing device dmix:CARD=HDA,DEV=7 NVIDIA Jetson AGX Orin HDA, HDMI 1 Direct sample mixing device dmix:CARD=HDA,DEV=8 NVIDIA Jetson AGX Orin HDA, HDMI 2 Direct sample mixing device dmix:CARD=HDA,DEV=9 NVIDIA Jetson AGX Orin HDA, HDMI 3 Direct sample mixing device usbstream:CARD=HDA NVIDIA Jetson AGX Orin HDA USB Stream Output hw:CARD=APE,DEV=0 NVIDIA Jetson AGX Orin APE, Direct hardware device without any conversions hw:CARD=APE,DEV=1 NVIDIA Jetson AGX Orin APE, Direct hardware device without any conversions hw:CARD=APE,DEV=2 NVIDIA Jetson AGX Orin APE, Direct hardware device without any conversions hw:CARD=APE,DEV=3 NVIDIA Jetson AGX Orin APE, Direct hardware device without any conversions hw:CARD=APE,DEV=4 NVIDIA Jetson AGX Orin APE, Direct hardware device without any conversions hw:CARD=APE,DEV=5 NVIDIA Jetson AGX Orin APE, Direct hardware device without any conversions hw:CARD=APE,DEV=6 NVIDIA Jetson AGX Orin APE, Direct hardware device without any conversions hw:CARD=APE,DEV=7 NVIDIA Jetson AGX Orin APE, Direct hardware device without any conversions hw:CARD=APE,DEV=8 NVIDIA Jetson AGX Orin APE, Direct hardware device without any conversions hw:CARD=APE,DEV=9 NVIDIA Jetson AGX Orin APE, Direct hardware device without any conversions hw:CARD=APE,DEV=10 NVIDIA Jetson AGX Orin APE, Direct hardware device without any conversions hw:CARD=APE,DEV=11 NVIDIA Jetson AGX Orin APE, Direct hardware device without any conversions hw:CARD=APE,DEV=12 NVIDIA Jetson AGX Orin APE, Direct hardware device without any conversions hw:CARD=APE,DEV=13 NVIDIA Jetson AGX Orin APE, Direct hardware device without any conversions hw:CARD=APE,DEV=14 NVIDIA Jetson AGX Orin APE, Direct hardware device without any conversions hw:CARD=APE,DEV=15 NVIDIA Jetson AGX Orin APE, Direct hardware device without any conversions hw:CARD=APE,DEV=16 NVIDIA Jetson AGX Orin APE, Direct hardware device without any conversions hw:CARD=APE,DEV=17 NVIDIA Jetson AGX Orin APE, Direct hardware device without any conversions hw:CARD=APE,DEV=18 NVIDIA Jetson AGX Orin APE, Direct hardware device without any conversions hw:CARD=APE,DEV=19 NVIDIA Jetson AGX Orin APE, Direct hardware device without any conversions plughw:CARD=APE,DEV=0 NVIDIA Jetson AGX Orin APE, Hardware device with all software conversions plughw:CARD=APE,DEV=1 NVIDIA Jetson AGX Orin APE, Hardware device with all software conversions plughw:CARD=APE,DEV=2 NVIDIA Jetson AGX Orin APE, Hardware device with all software conversions plughw:CARD=APE,DEV=3 NVIDIA Jetson AGX Orin APE, Hardware device with all software conversions plughw:CARD=APE,DEV=4 NVIDIA Jetson AGX Orin APE, Hardware device with all software conversions plughw:CARD=APE,DEV=5 NVIDIA Jetson AGX Orin APE, Hardware device with all software conversions plughw:CARD=APE,DEV=6 NVIDIA Jetson AGX Orin APE, Hardware device with all software conversions plughw:CARD=APE,DEV=7 NVIDIA Jetson AGX Orin APE, Hardware device with all software conversions plughw:CARD=APE,DEV=8 NVIDIA Jetson AGX Orin APE, Hardware device with all software conversions plughw:CARD=APE,DEV=9 NVIDIA Jetson AGX Orin APE, Hardware device with all software conversions plughw:CARD=APE,DEV=10 NVIDIA Jetson AGX Orin APE, Hardware device with all software conversions plughw:CARD=APE,DEV=11 NVIDIA Jetson AGX Orin APE, Hardware device with all software conversions plughw:CARD=APE,DEV=12 NVIDIA Jetson AGX Orin APE, Hardware device with all software conversions plughw:CARD=APE,DEV=13 NVIDIA Jetson AGX Orin APE, Hardware device with all software conversions plughw:CARD=APE,DEV=14 NVIDIA Jetson AGX Orin APE, Hardware device with all software conversions plughw:CARD=APE,DEV=15 NVIDIA Jetson AGX Orin APE, Hardware device with all software conversions plughw:CARD=APE,DEV=16 NVIDIA Jetson AGX Orin APE, Hardware device with all software conversions plughw:CARD=APE,DEV=17 NVIDIA Jetson AGX Orin APE, Hardware device with all software conversions plughw:CARD=APE,DEV=18 NVIDIA Jetson AGX Orin APE, Hardware device with all software conversions plughw:CARD=APE,DEV=19 NVIDIA Jetson AGX Orin APE, Hardware device with all software conversions sysdefault:CARD=APE NVIDIA Jetson AGX Orin APE, Default Audio Device front:CARD=APE,DEV=0 NVIDIA Jetson AGX Orin APE, Front output / input dmix:CARD=APE,DEV=0 NVIDIA Jetson AGX Orin APE, Direct sample mixing device dmix:CARD=APE,DEV=1 NVIDIA Jetson AGX Orin APE, Direct sample mixing device dmix:CARD=APE,DEV=2 NVIDIA Jetson AGX Orin APE, Direct sample mixing device dmix:CARD=APE,DEV=3 NVIDIA Jetson AGX Orin APE, Direct sample mixing device dmix:CARD=APE,DEV=4 NVIDIA Jetson AGX Orin APE, Direct sample mixing device dmix:CARD=APE,DEV=5 NVIDIA Jetson AGX Orin APE, Direct sample mixing device dmix:CARD=APE,DEV=6 NVIDIA Jetson AGX Orin APE, Direct sample mixing device dmix:CARD=APE,DEV=7 NVIDIA Jetson AGX Orin APE, Direct sample mixing device dmix:CARD=APE,DEV=8 NVIDIA Jetson AGX Orin APE, Direct sample mixing device dmix:CARD=APE,DEV=9 NVIDIA Jetson AGX Orin APE, Direct sample mixing device dmix:CARD=APE,DEV=10 NVIDIA Jetson AGX Orin APE, Direct sample mixing device dmix:CARD=APE,DEV=11 NVIDIA Jetson AGX Orin APE, Direct sample mixing device dmix:CARD=APE,DEV=12 NVIDIA Jetson AGX Orin APE, Direct sample mixing device dmix:CARD=APE,DEV=13 NVIDIA Jetson AGX Orin APE, Direct sample mixing device dmix:CARD=APE,DEV=14 NVIDIA Jetson AGX Orin APE, Direct sample mixing device dmix:CARD=APE,DEV=15 NVIDIA Jetson AGX Orin APE, Direct sample mixing device dmix:CARD=APE,DEV=16 NVIDIA Jetson AGX Orin APE, Direct sample mixing device dmix:CARD=APE,DEV=17 NVIDIA Jetson AGX Orin APE, Direct sample mixing device dmix:CARD=APE,DEV=18 NVIDIA Jetson AGX Orin APE, Direct sample mixing device dmix:CARD=APE,DEV=19 NVIDIA Jetson AGX Orin APE, Direct sample mixing device usbstream:CARD=APE NVIDIA Jetson AGX Orin APE USB Stream Output hw:CARD=S330,DEV=0 Anker PowerConf S330, USB Audio Direct hardware device without any conversions plughw:CARD=S330,DEV=0 Anker PowerConf S330, USB Audio Hardware device with all software conversions sysdefault:CARD=S330 Anker PowerConf S330, USB Audio Default Audio Device front:CARD=S330,DEV=0 Anker PowerConf S330, USB Audio Front output / input surround21:CARD=S330,DEV=0 Anker PowerConf S330, USB Audio 2.1 Surround output to Front and Subwoofer speakers surround40:CARD=S330,DEV=0 Anker PowerConf S330, USB Audio 4.0 Surround output to Front and Rear speakers surround41:CARD=S330,DEV=0 Anker PowerConf S330, USB Audio 4.1 Surround output to Front, Rear and Subwoofer speakers surround50:CARD=S330,DEV=0 Anker PowerConf S330, USB Audio 5.0 Surround output to Front, Center and Rear speakers surround51:CARD=S330,DEV=0 Anker PowerConf S330, USB Audio 5.1 Surround output to Front, Center, Rear and Subwoofer speakers surround71:CARD=S330,DEV=0 Anker PowerConf S330, USB Audio 7.1 Surround output to Front, Center, Side, Rear and Woofer speakers iec958:CARD=S330,DEV=0 Anker PowerConf S330, USB Audio IEC958 (S/PDIF) Digital Audio Output dmix:CARD=S330,DEV=0 Anker PowerConf S330, USB Audio Direct sample mixing device usbstream:CARD=S330 Anker PowerConf S330 USB Stream Output ```

arecord -L on host

```bash narandill@ubuntu:~$ arecord -L null Discard all samples (playback) or generate zero samples (capture) samplerate Rate Converter Plugin Using Samplerate Library speexrate Rate Converter Plugin Using Speex Resampler jack JACK Audio Connection Kit oss Open Sound System pulse PulseAudio Sound Server upmix Plugin for channel upmix (4,6,8) vdownmix Plugin for channel downmix (stereo) with a simple spacialization default Playback/recording through the PulseAudio sound server demixer usbstream:CARD=HDA NVIDIA Jetson AGX Orin HDA USB Stream Output hw:CARD=APE,DEV=0 NVIDIA Jetson AGX Orin APE, Direct hardware device without any conversions hw:CARD=APE,DEV=1 NVIDIA Jetson AGX Orin APE, Direct hardware device without any conversions hw:CARD=APE,DEV=2 NVIDIA Jetson AGX Orin APE, Direct hardware device without any conversions hw:CARD=APE,DEV=3 NVIDIA Jetson AGX Orin APE, Direct hardware device without any conversions hw:CARD=APE,DEV=4 NVIDIA Jetson AGX Orin APE, Direct hardware device without any conversions hw:CARD=APE,DEV=5 NVIDIA Jetson AGX Orin APE, Direct hardware device without any conversions hw:CARD=APE,DEV=6 NVIDIA Jetson AGX Orin APE, Direct hardware device without any conversions hw:CARD=APE,DEV=7 NVIDIA Jetson AGX Orin APE, Direct hardware device without any conversions hw:CARD=APE,DEV=8 NVIDIA Jetson AGX Orin APE, Direct hardware device without any conversions hw:CARD=APE,DEV=9 NVIDIA Jetson AGX Orin APE, Direct hardware device without any conversions hw:CARD=APE,DEV=10 NVIDIA Jetson AGX Orin APE, Direct hardware device without any conversions hw:CARD=APE,DEV=11 NVIDIA Jetson AGX Orin APE, Direct hardware device without any conversions hw:CARD=APE,DEV=12 NVIDIA Jetson AGX Orin APE, Direct hardware device without any conversions hw:CARD=APE,DEV=13 NVIDIA Jetson AGX Orin APE, Direct hardware device without any conversions hw:CARD=APE,DEV=14 NVIDIA Jetson AGX Orin APE, Direct hardware device without any conversions hw:CARD=APE,DEV=15 NVIDIA Jetson AGX Orin APE, Direct hardware device without any conversions hw:CARD=APE,DEV=16 NVIDIA Jetson AGX Orin APE, Direct hardware device without any conversions hw:CARD=APE,DEV=17 NVIDIA Jetson AGX Orin APE, Direct hardware device without any conversions hw:CARD=APE,DEV=18 NVIDIA Jetson AGX Orin APE, Direct hardware device without any conversions hw:CARD=APE,DEV=19 NVIDIA Jetson AGX Orin APE, Direct hardware device without any conversions plughw:CARD=APE,DEV=0 NVIDIA Jetson AGX Orin APE, Hardware device with all software conversions plughw:CARD=APE,DEV=1 NVIDIA Jetson AGX Orin APE, Hardware device with all software conversions plughw:CARD=APE,DEV=2 NVIDIA Jetson AGX Orin APE, Hardware device with all software conversions plughw:CARD=APE,DEV=3 NVIDIA Jetson AGX Orin APE, Hardware device with all software conversions plughw:CARD=APE,DEV=4 NVIDIA Jetson AGX Orin APE, Hardware device with all software conversions plughw:CARD=APE,DEV=5 NVIDIA Jetson AGX Orin APE, Hardware device with all software conversions plughw:CARD=APE,DEV=6 NVIDIA Jetson AGX Orin APE, Hardware device with all software conversions plughw:CARD=APE,DEV=7 NVIDIA Jetson AGX Orin APE, Hardware device with all software conversions plughw:CARD=APE,DEV=8 NVIDIA Jetson AGX Orin APE, Hardware device with all software conversions plughw:CARD=APE,DEV=9 NVIDIA Jetson AGX Orin APE, Hardware device with all software conversions plughw:CARD=APE,DEV=10 NVIDIA Jetson AGX Orin APE, Hardware device with all software conversions plughw:CARD=APE,DEV=11 NVIDIA Jetson AGX Orin APE, Hardware device with all software conversions plughw:CARD=APE,DEV=12 NVIDIA Jetson AGX Orin APE, Hardware device with all software conversions plughw:CARD=APE,DEV=13 NVIDIA Jetson AGX Orin APE, Hardware device with all software conversions plughw:CARD=APE,DEV=14 NVIDIA Jetson AGX Orin APE, Hardware device with all software conversions plughw:CARD=APE,DEV=15 NVIDIA Jetson AGX Orin APE, Hardware device with all software conversions plughw:CARD=APE,DEV=16 NVIDIA Jetson AGX Orin APE, Hardware device with all software conversions plughw:CARD=APE,DEV=17 NVIDIA Jetson AGX Orin APE, Hardware device with all software conversions plughw:CARD=APE,DEV=18 NVIDIA Jetson AGX Orin APE, Hardware device with all software conversions plughw:CARD=APE,DEV=19 NVIDIA Jetson AGX Orin APE, Hardware device with all software conversions sysdefault:CARD=APE NVIDIA Jetson AGX Orin APE, Default Audio Device front:CARD=APE,DEV=0 NVIDIA Jetson AGX Orin APE, Front output / input dsnoop:CARD=APE,DEV=0 NVIDIA Jetson AGX Orin APE, Direct sample snooping device dsnoop:CARD=APE,DEV=1 NVIDIA Jetson AGX Orin APE, Direct sample snooping device dsnoop:CARD=APE,DEV=2 NVIDIA Jetson AGX Orin APE, Direct sample snooping device dsnoop:CARD=APE,DEV=3 NVIDIA Jetson AGX Orin APE, Direct sample snooping device dsnoop:CARD=APE,DEV=4 NVIDIA Jetson AGX Orin APE, Direct sample snooping device dsnoop:CARD=APE,DEV=5 NVIDIA Jetson AGX Orin APE, Direct sample snooping device dsnoop:CARD=APE,DEV=6 NVIDIA Jetson AGX Orin APE, Direct sample snooping device dsnoop:CARD=APE,DEV=7 NVIDIA Jetson AGX Orin APE, Direct sample snooping device dsnoop:CARD=APE,DEV=8 NVIDIA Jetson AGX Orin APE, Direct sample snooping device dsnoop:CARD=APE,DEV=9 NVIDIA Jetson AGX Orin APE, Direct sample snooping device dsnoop:CARD=APE,DEV=10 NVIDIA Jetson AGX Orin APE, Direct sample snooping device dsnoop:CARD=APE,DEV=11 NVIDIA Jetson AGX Orin APE, Direct sample snooping device dsnoop:CARD=APE,DEV=12 NVIDIA Jetson AGX Orin APE, Direct sample snooping device dsnoop:CARD=APE,DEV=13 NVIDIA Jetson AGX Orin APE, Direct sample snooping device dsnoop:CARD=APE,DEV=14 NVIDIA Jetson AGX Orin APE, Direct sample snooping device dsnoop:CARD=APE,DEV=15 NVIDIA Jetson AGX Orin APE, Direct sample snooping device dsnoop:CARD=APE,DEV=16 NVIDIA Jetson AGX Orin APE, Direct sample snooping device dsnoop:CARD=APE,DEV=17 NVIDIA Jetson AGX Orin APE, Direct sample snooping device dsnoop:CARD=APE,DEV=18 NVIDIA Jetson AGX Orin APE, Direct sample snooping device dsnoop:CARD=APE,DEV=19 NVIDIA Jetson AGX Orin APE, Direct sample snooping device usbstream:CARD=APE NVIDIA Jetson AGX Orin APE USB Stream Output hw:CARD=S330,DEV=0 Anker PowerConf S330, USB Audio Direct hardware device without any conversions plughw:CARD=S330,DEV=0 Anker PowerConf S330, USB Audio Hardware device with all software conversions sysdefault:CARD=S330 Anker PowerConf S330, USB Audio Default Audio Device front:CARD=S330,DEV=0 Anker PowerConf S330, USB Audio Front output / input dsnoop:CARD=S330,DEV=0 Anker PowerConf S330, USB Audio Direct sample snooping device usbstream:CARD=S330 Anker PowerConf S330 USB Stream Output ```

jetson-containers tests – 💩 Mic/Speaker not available

Those are the test's that are automatically launched after building the container (not intermediate).

aplay -L on jetson-containers

```bash 12:28:05 null 12:28:05 Discard all samples (playback) or generate zero samples (capture) 12:28:05 samplerate 12:28:05 Rate Converter Plugin Using Samplerate Library 12:28:05 speexrate 12:28:05 Rate Converter Plugin Using Speex Resampler 12:28:05 jack 12:28:05 JACK Audio Connection Kit 12:28:05 oss 12:28:05 Open Sound System 12:28:05 pulse 12:28:05 PulseAudio Sound Server 12:28:05 upmix 12:28:05 Plugin for channel upmix (4,6,8) 12:28:05 vdownmix 12:28:05 Plugin for channel downmix (stereo) with a simple spacialization ```

arecord -L on jetson-containers

```bash 12:28:05 null 12:28:05 Discard all samples (playback) or generate zero samples (capture) 12:28:05 samplerate 12:28:05 Rate Converter Plugin Using Samplerate Library 12:28:05 speexrate 12:28:05 Rate Converter Plugin Using Speex Resampler 12:28:05 jack 12:28:05 JACK Audio Connection Kit 12:28:05 oss 12:28:05 Open Sound System 12:28:05 pulse 12:28:05 PulseAudio Sound Server 12:28:05 upmix 12:28:05 Plugin for channel upmix (4,6,8) 12:28:05 vdownmix 12:28:05 Plugin for channel downmix (stereo) with a simple spacialization ```

Looks like Anker is not visible in this context.

docker-compose – ✅ Mic/Speaker detected / working as expected

Personally I don't use docker run to host jetson-containers in favour of docker-compose with below config:

name: sound-test
version: "3.9"
services:
  assist-microphone:
    image: ms1design/wyoming-assist-microphone:r36.2.0-cu122
    network_mode: host
    container_name: assist-microphone
    hostname: assist-microphone
    devices:
      - /dev/snd:/dev/snd
      - /dev/bus/usb
aplay -L on docker-compose

```bash root@assist-microphone:/usr/src/sounds# aplay -L null Discard all samples (playback) or generate zero samples (capture) samplerate Rate Converter Plugin Using Samplerate Library speexrate Rate Converter Plugin Using Speex Resampler jack JACK Audio Connection Kit oss Open Sound System pulse PulseAudio Sound Server upmix Plugin for channel upmix (4,6,8) vdownmix Plugin for channel downmix (stereo) with a simple spacialization hw:CARD=HDA,DEV=3 NVIDIA Jetson AGX Orin HDA, HDMI 0 Direct hardware device without any conversions hw:CARD=HDA,DEV=7 NVIDIA Jetson AGX Orin HDA, HDMI 1 Direct hardware device without any conversions hw:CARD=HDA,DEV=8 NVIDIA Jetson AGX Orin HDA, HDMI 2 Direct hardware device without any conversions hw:CARD=HDA,DEV=9 NVIDIA Jetson AGX Orin HDA, HDMI 3 Direct hardware device without any conversions plughw:CARD=HDA,DEV=3 NVIDIA Jetson AGX Orin HDA, HDMI 0 Hardware device with all software conversions plughw:CARD=HDA,DEV=7 NVIDIA Jetson AGX Orin HDA, HDMI 1 Hardware device with all software conversions plughw:CARD=HDA,DEV=8 NVIDIA Jetson AGX Orin HDA, HDMI 2 Hardware device with all software conversions plughw:CARD=HDA,DEV=9 NVIDIA Jetson AGX Orin HDA, HDMI 3 Hardware device with all software conversions dmix:CARD=HDA,DEV=3 NVIDIA Jetson AGX Orin HDA, HDMI 0 Direct sample mixing device dmix:CARD=HDA,DEV=7 NVIDIA Jetson AGX Orin HDA, HDMI 1 Direct sample mixing device dmix:CARD=HDA,DEV=8 NVIDIA Jetson AGX Orin HDA, HDMI 2 Direct sample mixing device dmix:CARD=HDA,DEV=9 NVIDIA Jetson AGX Orin HDA, HDMI 3 Direct sample mixing device usbstream:CARD=HDA NVIDIA Jetson AGX Orin HDA USB Stream Output hw:CARD=APE,DEV=0 NVIDIA Jetson AGX Orin APE, Direct hardware device without any conversions hw:CARD=APE,DEV=1 NVIDIA Jetson AGX Orin APE, Direct hardware device without any conversions hw:CARD=APE,DEV=2 NVIDIA Jetson AGX Orin APE, Direct hardware device without any conversions hw:CARD=APE,DEV=3 NVIDIA Jetson AGX Orin APE, Direct hardware device without any conversions hw:CARD=APE,DEV=4 NVIDIA Jetson AGX Orin APE, Direct hardware device without any conversions hw:CARD=APE,DEV=5 NVIDIA Jetson AGX Orin APE, Direct hardware device without any conversions hw:CARD=APE,DEV=6 NVIDIA Jetson AGX Orin APE, Direct hardware device without any conversions hw:CARD=APE,DEV=7 NVIDIA Jetson AGX Orin APE, Direct hardware device without any conversions hw:CARD=APE,DEV=8 NVIDIA Jetson AGX Orin APE, Direct hardware device without any conversions hw:CARD=APE,DEV=9 NVIDIA Jetson AGX Orin APE, Direct hardware device without any conversions hw:CARD=APE,DEV=10 NVIDIA Jetson AGX Orin APE, Direct hardware device without any conversions hw:CARD=APE,DEV=11 NVIDIA Jetson AGX Orin APE, Direct hardware device without any conversions hw:CARD=APE,DEV=12 NVIDIA Jetson AGX Orin APE, Direct hardware device without any conversions hw:CARD=APE,DEV=13 NVIDIA Jetson AGX Orin APE, Direct hardware device without any conversions hw:CARD=APE,DEV=14 NVIDIA Jetson AGX Orin APE, Direct hardware device without any conversions hw:CARD=APE,DEV=15 NVIDIA Jetson AGX Orin APE, Direct hardware device without any conversions hw:CARD=APE,DEV=16 NVIDIA Jetson AGX Orin APE, Direct hardware device without any conversions hw:CARD=APE,DEV=17 NVIDIA Jetson AGX Orin APE, Direct hardware device without any conversions hw:CARD=APE,DEV=18 NVIDIA Jetson AGX Orin APE, Direct hardware device without any conversions hw:CARD=APE,DEV=19 NVIDIA Jetson AGX Orin APE, Direct hardware device without any conversions plughw:CARD=APE,DEV=0 NVIDIA Jetson AGX Orin APE, Hardware device with all software conversions plughw:CARD=APE,DEV=1 NVIDIA Jetson AGX Orin APE, Hardware device with all software conversions plughw:CARD=APE,DEV=2 NVIDIA Jetson AGX Orin APE, Hardware device with all software conversions plughw:CARD=APE,DEV=3 NVIDIA Jetson AGX Orin APE, Hardware device with all software conversions plughw:CARD=APE,DEV=4 NVIDIA Jetson AGX Orin APE, Hardware device with all software conversions plughw:CARD=APE,DEV=5 NVIDIA Jetson AGX Orin APE, Hardware device with all software conversions plughw:CARD=APE,DEV=6 NVIDIA Jetson AGX Orin APE, Hardware device with all software conversions plughw:CARD=APE,DEV=7 NVIDIA Jetson AGX Orin APE, Hardware device with all software conversions plughw:CARD=APE,DEV=8 NVIDIA Jetson AGX Orin APE, Hardware device with all software conversions plughw:CARD=APE,DEV=9 NVIDIA Jetson AGX Orin APE, Hardware device with all software conversions plughw:CARD=APE,DEV=10 NVIDIA Jetson AGX Orin APE, Hardware device with all software conversions plughw:CARD=APE,DEV=11 NVIDIA Jetson AGX Orin APE, Hardware device with all software conversions plughw:CARD=APE,DEV=12 NVIDIA Jetson AGX Orin APE, Hardware device with all software conversions plughw:CARD=APE,DEV=13 NVIDIA Jetson AGX Orin APE, Hardware device with all software conversions plughw:CARD=APE,DEV=14 NVIDIA Jetson AGX Orin APE, Hardware device with all software conversions plughw:CARD=APE,DEV=15 NVIDIA Jetson AGX Orin APE, Hardware device with all software conversions plughw:CARD=APE,DEV=16 NVIDIA Jetson AGX Orin APE, Hardware device with all software conversions plughw:CARD=APE,DEV=17 NVIDIA Jetson AGX Orin APE, Hardware device with all software conversions plughw:CARD=APE,DEV=18 NVIDIA Jetson AGX Orin APE, Hardware device with all software conversions plughw:CARD=APE,DEV=19 NVIDIA Jetson AGX Orin APE, Hardware device with all software conversions default:CARD=APE NVIDIA Jetson AGX Orin APE, Default Audio Device sysdefault:CARD=APE NVIDIA Jetson AGX Orin APE, Default Audio Device dmix:CARD=APE,DEV=0 NVIDIA Jetson AGX Orin APE, Direct sample mixing device dmix:CARD=APE,DEV=1 NVIDIA Jetson AGX Orin APE, Direct sample mixing device dmix:CARD=APE,DEV=2 NVIDIA Jetson AGX Orin APE, Direct sample mixing device dmix:CARD=APE,DEV=3 NVIDIA Jetson AGX Orin APE, Direct sample mixing device dmix:CARD=APE,DEV=4 NVIDIA Jetson AGX Orin APE, Direct sample mixing device dmix:CARD=APE,DEV=5 NVIDIA Jetson AGX Orin APE, Direct sample mixing device dmix:CARD=APE,DEV=6 NVIDIA Jetson AGX Orin APE, Direct sample mixing device dmix:CARD=APE,DEV=7 NVIDIA Jetson AGX Orin APE, Direct sample mixing device dmix:CARD=APE,DEV=8 NVIDIA Jetson AGX Orin APE, Direct sample mixing device dmix:CARD=APE,DEV=9 NVIDIA Jetson AGX Orin APE, Direct sample mixing device dmix:CARD=APE,DEV=10 NVIDIA Jetson AGX Orin APE, Direct sample mixing device dmix:CARD=APE,DEV=11 NVIDIA Jetson AGX Orin APE, Direct sample mixing device dmix:CARD=APE,DEV=12 NVIDIA Jetson AGX Orin APE, Direct sample mixing device dmix:CARD=APE,DEV=13 NVIDIA Jetson AGX Orin APE, Direct sample mixing device dmix:CARD=APE,DEV=14 NVIDIA Jetson AGX Orin APE, Direct sample mixing device dmix:CARD=APE,DEV=15 NVIDIA Jetson AGX Orin APE, Direct sample mixing device dmix:CARD=APE,DEV=16 NVIDIA Jetson AGX Orin APE, Direct sample mixing device dmix:CARD=APE,DEV=17 NVIDIA Jetson AGX Orin APE, Direct sample mixing device dmix:CARD=APE,DEV=18 NVIDIA Jetson AGX Orin APE, Direct sample mixing device dmix:CARD=APE,DEV=19 NVIDIA Jetson AGX Orin APE, Direct sample mixing device usbstream:CARD=APE NVIDIA Jetson AGX Orin APE USB Stream Output hw:CARD=S330,DEV=0 Anker PowerConf S330, USB Audio Direct hardware device without any conversions plughw:CARD=S330,DEV=0 Anker PowerConf S330, USB Audio Hardware device with all software conversions default:CARD=S330 Anker PowerConf S330, USB Audio Default Audio Device sysdefault:CARD=S330 Anker PowerConf S330, USB Audio Default Audio Device front:CARD=S330,DEV=0 Anker PowerConf S330, USB Audio Front output / input surround21:CARD=S330,DEV=0 Anker PowerConf S330, USB Audio 2.1 Surround output to Front and Subwoofer speakers surround40:CARD=S330,DEV=0 Anker PowerConf S330, USB Audio 4.0 Surround output to Front and Rear speakers surround41:CARD=S330,DEV=0 Anker PowerConf S330, USB Audio 4.1 Surround output to Front, Rear and Subwoofer speakers surround50:CARD=S330,DEV=0 Anker PowerConf S330, USB Audio 5.0 Surround output to Front, Center and Rear speakers surround51:CARD=S330,DEV=0 Anker PowerConf S330, USB Audio 5.1 Surround output to Front, Center, Rear and Subwoofer speakers surround71:CARD=S330,DEV=0 Anker PowerConf S330, USB Audio 7.1 Surround output to Front, Center, Side, Rear and Woofer speakers iec958:CARD=S330,DEV=0 Anker PowerConf S330, USB Audio IEC958 (S/PDIF) Digital Audio Output dmix:CARD=S330,DEV=0 Anker PowerConf S330, USB Audio Direct sample mixing device usbstream:CARD=S330 Anker PowerConf S330 USB Stream Output ```

arecord -L on docker-compose

```bash root@assist-microphone:/usr/src/sounds# arecord -L null Discard all samples (playback) or generate zero samples (capture) samplerate Rate Converter Plugin Using Samplerate Library speexrate Rate Converter Plugin Using Speex Resampler jack JACK Audio Connection Kit oss Open Sound System pulse PulseAudio Sound Server upmix Plugin for channel upmix (4,6,8) vdownmix Plugin for channel downmix (stereo) with a simple spacialization usbstream:CARD=HDA NVIDIA Jetson AGX Orin HDA USB Stream Output hw:CARD=APE,DEV=0 NVIDIA Jetson AGX Orin APE, Direct hardware device without any conversions hw:CARD=APE,DEV=1 NVIDIA Jetson AGX Orin APE, Direct hardware device without any conversions hw:CARD=APE,DEV=2 NVIDIA Jetson AGX Orin APE, Direct hardware device without any conversions hw:CARD=APE,DEV=3 NVIDIA Jetson AGX Orin APE, Direct hardware device without any conversions hw:CARD=APE,DEV=4 NVIDIA Jetson AGX Orin APE, Direct hardware device without any conversions hw:CARD=APE,DEV=5 NVIDIA Jetson AGX Orin APE, Direct hardware device without any conversions hw:CARD=APE,DEV=6 NVIDIA Jetson AGX Orin APE, Direct hardware device without any conversions hw:CARD=APE,DEV=7 NVIDIA Jetson AGX Orin APE, Direct hardware device without any conversions hw:CARD=APE,DEV=8 NVIDIA Jetson AGX Orin APE, Direct hardware device without any conversions hw:CARD=APE,DEV=9 NVIDIA Jetson AGX Orin APE, Direct hardware device without any conversions hw:CARD=APE,DEV=10 NVIDIA Jetson AGX Orin APE, Direct hardware device without any conversions hw:CARD=APE,DEV=11 NVIDIA Jetson AGX Orin APE, Direct hardware device without any conversions hw:CARD=APE,DEV=12 NVIDIA Jetson AGX Orin APE, Direct hardware device without any conversions hw:CARD=APE,DEV=13 NVIDIA Jetson AGX Orin APE, Direct hardware device without any conversions hw:CARD=APE,DEV=14 NVIDIA Jetson AGX Orin APE, Direct hardware device without any conversions hw:CARD=APE,DEV=15 NVIDIA Jetson AGX Orin APE, Direct hardware device without any conversions hw:CARD=APE,DEV=16 NVIDIA Jetson AGX Orin APE, Direct hardware device without any conversions hw:CARD=APE,DEV=17 NVIDIA Jetson AGX Orin APE, Direct hardware device without any conversions hw:CARD=APE,DEV=18 NVIDIA Jetson AGX Orin APE, Direct hardware device without any conversions hw:CARD=APE,DEV=19 NVIDIA Jetson AGX Orin APE, Direct hardware device without any conversions plughw:CARD=APE,DEV=0 NVIDIA Jetson AGX Orin APE, Hardware device with all software conversions plughw:CARD=APE,DEV=1 NVIDIA Jetson AGX Orin APE, Hardware device with all software conversions plughw:CARD=APE,DEV=2 NVIDIA Jetson AGX Orin APE, Hardware device with all software conversions plughw:CARD=APE,DEV=3 NVIDIA Jetson AGX Orin APE, Hardware device with all software conversions plughw:CARD=APE,DEV=4 NVIDIA Jetson AGX Orin APE, Hardware device with all software conversions plughw:CARD=APE,DEV=5 NVIDIA Jetson AGX Orin APE, Hardware device with all software conversions plughw:CARD=APE,DEV=6 NVIDIA Jetson AGX Orin APE, Hardware device with all software conversions plughw:CARD=APE,DEV=7 NVIDIA Jetson AGX Orin APE, Hardware device with all software conversions plughw:CARD=APE,DEV=8 NVIDIA Jetson AGX Orin APE, Hardware device with all software conversions plughw:CARD=APE,DEV=9 NVIDIA Jetson AGX Orin APE, Hardware device with all software conversions plughw:CARD=APE,DEV=10 NVIDIA Jetson AGX Orin APE, Hardware device with all software conversions plughw:CARD=APE,DEV=11 NVIDIA Jetson AGX Orin APE, Hardware device with all software conversions plughw:CARD=APE,DEV=12 NVIDIA Jetson AGX Orin APE, Hardware device with all software conversions plughw:CARD=APE,DEV=13 NVIDIA Jetson AGX Orin APE, Hardware device with all software conversions plughw:CARD=APE,DEV=14 NVIDIA Jetson AGX Orin APE, Hardware device with all software conversions plughw:CARD=APE,DEV=15 NVIDIA Jetson AGX Orin APE, Hardware device with all software conversions plughw:CARD=APE,DEV=16 NVIDIA Jetson AGX Orin APE, Hardware device with all software conversions plughw:CARD=APE,DEV=17 NVIDIA Jetson AGX Orin APE, Hardware device with all software conversions plughw:CARD=APE,DEV=18 NVIDIA Jetson AGX Orin APE, Hardware device with all software conversions plughw:CARD=APE,DEV=19 NVIDIA Jetson AGX Orin APE, Hardware device with all software conversions default:CARD=APE NVIDIA Jetson AGX Orin APE, Default Audio Device sysdefault:CARD=APE NVIDIA Jetson AGX Orin APE, Default Audio Device dsnoop:CARD=APE,DEV=0 NVIDIA Jetson AGX Orin APE, Direct sample snooping device dsnoop:CARD=APE,DEV=1 NVIDIA Jetson AGX Orin APE, Direct sample snooping device dsnoop:CARD=APE,DEV=2 NVIDIA Jetson AGX Orin APE, Direct sample snooping device dsnoop:CARD=APE,DEV=3 NVIDIA Jetson AGX Orin APE, Direct sample snooping device dsnoop:CARD=APE,DEV=4 NVIDIA Jetson AGX Orin APE, Direct sample snooping device dsnoop:CARD=APE,DEV=5 NVIDIA Jetson AGX Orin APE, Direct sample snooping device dsnoop:CARD=APE,DEV=6 NVIDIA Jetson AGX Orin APE, Direct sample snooping device dsnoop:CARD=APE,DEV=7 NVIDIA Jetson AGX Orin APE, Direct sample snooping device dsnoop:CARD=APE,DEV=8 NVIDIA Jetson AGX Orin APE, Direct sample snooping device dsnoop:CARD=APE,DEV=9 NVIDIA Jetson AGX Orin APE, Direct sample snooping device dsnoop:CARD=APE,DEV=10 NVIDIA Jetson AGX Orin APE, Direct sample snooping device dsnoop:CARD=APE,DEV=11 NVIDIA Jetson AGX Orin APE, Direct sample snooping device dsnoop:CARD=APE,DEV=12 NVIDIA Jetson AGX Orin APE, Direct sample snooping device dsnoop:CARD=APE,DEV=13 NVIDIA Jetson AGX Orin APE, Direct sample snooping device dsnoop:CARD=APE,DEV=14 NVIDIA Jetson AGX Orin APE, Direct sample snooping device dsnoop:CARD=APE,DEV=15 NVIDIA Jetson AGX Orin APE, Direct sample snooping device dsnoop:CARD=APE,DEV=16 NVIDIA Jetson AGX Orin APE, Direct sample snooping device dsnoop:CARD=APE,DEV=17 NVIDIA Jetson AGX Orin APE, Direct sample snooping device dsnoop:CARD=APE,DEV=18 NVIDIA Jetson AGX Orin APE, Direct sample snooping device dsnoop:CARD=APE,DEV=19 NVIDIA Jetson AGX Orin APE, Direct sample snooping device usbstream:CARD=APE NVIDIA Jetson AGX Orin APE USB Stream Output hw:CARD=S330,DEV=0 Anker PowerConf S330, USB Audio Direct hardware device without any conversions plughw:CARD=S330,DEV=0 Anker PowerConf S330, USB Audio Hardware device with all software conversions default:CARD=S330 Anker PowerConf S330, USB Audio Default Audio Device sysdefault:CARD=S330 Anker PowerConf S330, USB Audio Default Audio Device front:CARD=S330,DEV=0 Anker PowerConf S330, USB Audio Front output / input dsnoop:CARD=S330,DEV=0 Anker PowerConf S330, USB Audio Direct sample snooping device usbstream:CARD=S330 Anker PowerConf S330 USB Stream Output ```

docker run – ✅ Mic/Speaker detected / working as expected

Tested also the default docker run command:

docker run --rm \
    --name audio_test \
    --device /dev/snd:/dev/snd \
    --device /dev/bus/usb:/dev/bus/usb \
    ms1design/wyoming-assist-microphone:r36.2.0-cu122 \
    /bin/bash -c "aplay -L"
docker run --rm \
    --name audio_test \
    --device /dev/snd:/dev/snd \
    --device /dev/bus/usb:/dev/bus/usb \
    ms1design/wyoming-assist-microphone:r36.2.0-cu122 \
    /bin/bash -c "arecord -L"
aplay -L on docker run

```bash narandill@ubuntu:~$ docker run --rm \ --name audio_test \ --device /dev/snd:/dev/snd \ --device /dev/bus/usb:/dev/bus/usb \ ms1design/wyoming-assist-microphone:r36.2.0-cu122 \ /bin/bash -c "aplay -L" null Discard all samples (playback) or generate zero samples (capture) samplerate Rate Converter Plugin Using Samplerate Library speexrate Rate Converter Plugin Using Speex Resampler jack JACK Audio Connection Kit oss Open Sound System pulse PulseAudio Sound Server upmix Plugin for channel upmix (4,6,8) vdownmix Plugin for channel downmix (stereo) with a simple spacialization hw:CARD=HDA,DEV=3 NVIDIA Jetson AGX Orin HDA, HDMI 0 Direct hardware device without any conversions hw:CARD=HDA,DEV=7 NVIDIA Jetson AGX Orin HDA, HDMI 1 Direct hardware device without any conversions hw:CARD=HDA,DEV=8 NVIDIA Jetson AGX Orin HDA, HDMI 2 Direct hardware device without any conversions hw:CARD=HDA,DEV=9 NVIDIA Jetson AGX Orin HDA, HDMI 3 Direct hardware device without any conversions plughw:CARD=HDA,DEV=3 NVIDIA Jetson AGX Orin HDA, HDMI 0 Hardware device with all software conversions plughw:CARD=HDA,DEV=7 NVIDIA Jetson AGX Orin HDA, HDMI 1 Hardware device with all software conversions plughw:CARD=HDA,DEV=8 NVIDIA Jetson AGX Orin HDA, HDMI 2 Hardware device with all software conversions plughw:CARD=HDA,DEV=9 NVIDIA Jetson AGX Orin HDA, HDMI 3 Hardware device with all software conversions dmix:CARD=HDA,DEV=3 NVIDIA Jetson AGX Orin HDA, HDMI 0 Direct sample mixing device dmix:CARD=HDA,DEV=7 NVIDIA Jetson AGX Orin HDA, HDMI 1 Direct sample mixing device dmix:CARD=HDA,DEV=8 NVIDIA Jetson AGX Orin HDA, HDMI 2 Direct sample mixing device dmix:CARD=HDA,DEV=9 NVIDIA Jetson AGX Orin HDA, HDMI 3 Direct sample mixing device usbstream:CARD=HDA NVIDIA Jetson AGX Orin HDA USB Stream Output hw:CARD=APE,DEV=0 NVIDIA Jetson AGX Orin APE, Direct hardware device without any conversions hw:CARD=APE,DEV=1 NVIDIA Jetson AGX Orin APE, Direct hardware device without any conversions hw:CARD=APE,DEV=2 NVIDIA Jetson AGX Orin APE, Direct hardware device without any conversions hw:CARD=APE,DEV=3 NVIDIA Jetson AGX Orin APE, Direct hardware device without any conversions hw:CARD=APE,DEV=4 NVIDIA Jetson AGX Orin APE, Direct hardware device without any conversions hw:CARD=APE,DEV=5 NVIDIA Jetson AGX Orin APE, Direct hardware device without any conversions hw:CARD=APE,DEV=6 NVIDIA Jetson AGX Orin APE, Direct hardware device without any conversions hw:CARD=APE,DEV=7 NVIDIA Jetson AGX Orin APE, Direct hardware device without any conversions hw:CARD=APE,DEV=8 NVIDIA Jetson AGX Orin APE, Direct hardware device without any conversions hw:CARD=APE,DEV=9 NVIDIA Jetson AGX Orin APE, Direct hardware device without any conversions hw:CARD=APE,DEV=10 NVIDIA Jetson AGX Orin APE, Direct hardware device without any conversions hw:CARD=APE,DEV=11 NVIDIA Jetson AGX Orin APE, Direct hardware device without any conversions hw:CARD=APE,DEV=12 NVIDIA Jetson AGX Orin APE, Direct hardware device without any conversions hw:CARD=APE,DEV=13 NVIDIA Jetson AGX Orin APE, Direct hardware device without any conversions hw:CARD=APE,DEV=14 NVIDIA Jetson AGX Orin APE, Direct hardware device without any conversions hw:CARD=APE,DEV=15 NVIDIA Jetson AGX Orin APE, Direct hardware device without any conversions hw:CARD=APE,DEV=16 NVIDIA Jetson AGX Orin APE, Direct hardware device without any conversions hw:CARD=APE,DEV=17 NVIDIA Jetson AGX Orin APE, Direct hardware device without any conversions hw:CARD=APE,DEV=18 NVIDIA Jetson AGX Orin APE, Direct hardware device without any conversions hw:CARD=APE,DEV=19 NVIDIA Jetson AGX Orin APE, Direct hardware device without any conversions plughw:CARD=APE,DEV=0 NVIDIA Jetson AGX Orin APE, Hardware device with all software conversions plughw:CARD=APE,DEV=1 NVIDIA Jetson AGX Orin APE, Hardware device with all software conversions plughw:CARD=APE,DEV=2 NVIDIA Jetson AGX Orin APE, Hardware device with all software conversions plughw:CARD=APE,DEV=3 NVIDIA Jetson AGX Orin APE, Hardware device with all software conversions plughw:CARD=APE,DEV=4 NVIDIA Jetson AGX Orin APE, Hardware device with all software conversions plughw:CARD=APE,DEV=5 NVIDIA Jetson AGX Orin APE, Hardware device with all software conversions plughw:CARD=APE,DEV=6 NVIDIA Jetson AGX Orin APE, Hardware device with all software conversions plughw:CARD=APE,DEV=7 NVIDIA Jetson AGX Orin APE, Hardware device with all software conversions plughw:CARD=APE,DEV=8 NVIDIA Jetson AGX Orin APE, Hardware device with all software conversions plughw:CARD=APE,DEV=9 NVIDIA Jetson AGX Orin APE, Hardware device with all software conversions plughw:CARD=APE,DEV=10 NVIDIA Jetson AGX Orin APE, Hardware device with all software conversions plughw:CARD=APE,DEV=11 NVIDIA Jetson AGX Orin APE, Hardware device with all software conversions plughw:CARD=APE,DEV=12 NVIDIA Jetson AGX Orin APE, Hardware device with all software conversions plughw:CARD=APE,DEV=13 NVIDIA Jetson AGX Orin APE, Hardware device with all software conversions plughw:CARD=APE,DEV=14 NVIDIA Jetson AGX Orin APE, Hardware device with all software conversions plughw:CARD=APE,DEV=15 NVIDIA Jetson AGX Orin APE, Hardware device with all software conversions plughw:CARD=APE,DEV=16 NVIDIA Jetson AGX Orin APE, Hardware device with all software conversions plughw:CARD=APE,DEV=17 NVIDIA Jetson AGX Orin APE, Hardware device with all software conversions plughw:CARD=APE,DEV=18 NVIDIA Jetson AGX Orin APE, Hardware device with all software conversions plughw:CARD=APE,DEV=19 NVIDIA Jetson AGX Orin APE, Hardware device with all software conversions default:CARD=APE NVIDIA Jetson AGX Orin APE, Default Audio Device sysdefault:CARD=APE NVIDIA Jetson AGX Orin APE, Default Audio Device dmix:CARD=APE,DEV=0 NVIDIA Jetson AGX Orin APE, Direct sample mixing device dmix:CARD=APE,DEV=1 NVIDIA Jetson AGX Orin APE, Direct sample mixing device dmix:CARD=APE,DEV=2 NVIDIA Jetson AGX Orin APE, Direct sample mixing device dmix:CARD=APE,DEV=3 NVIDIA Jetson AGX Orin APE, Direct sample mixing device dmix:CARD=APE,DEV=4 NVIDIA Jetson AGX Orin APE, Direct sample mixing device dmix:CARD=APE,DEV=5 NVIDIA Jetson AGX Orin APE, Direct sample mixing device dmix:CARD=APE,DEV=6 NVIDIA Jetson AGX Orin APE, Direct sample mixing device dmix:CARD=APE,DEV=7 NVIDIA Jetson AGX Orin APE, Direct sample mixing device dmix:CARD=APE,DEV=8 NVIDIA Jetson AGX Orin APE, Direct sample mixing device dmix:CARD=APE,DEV=9 NVIDIA Jetson AGX Orin APE, Direct sample mixing device dmix:CARD=APE,DEV=10 NVIDIA Jetson AGX Orin APE, Direct sample mixing device dmix:CARD=APE,DEV=11 NVIDIA Jetson AGX Orin APE, Direct sample mixing device dmix:CARD=APE,DEV=12 NVIDIA Jetson AGX Orin APE, Direct sample mixing device dmix:CARD=APE,DEV=13 NVIDIA Jetson AGX Orin APE, Direct sample mixing device dmix:CARD=APE,DEV=14 NVIDIA Jetson AGX Orin APE, Direct sample mixing device dmix:CARD=APE,DEV=15 NVIDIA Jetson AGX Orin APE, Direct sample mixing device dmix:CARD=APE,DEV=16 NVIDIA Jetson AGX Orin APE, Direct sample mixing device dmix:CARD=APE,DEV=17 NVIDIA Jetson AGX Orin APE, Direct sample mixing device dmix:CARD=APE,DEV=18 NVIDIA Jetson AGX Orin APE, Direct sample mixing device dmix:CARD=APE,DEV=19 NVIDIA Jetson AGX Orin APE, Direct sample mixing device usbstream:CARD=APE NVIDIA Jetson AGX Orin APE USB Stream Output hw:CARD=S330,DEV=0 Anker PowerConf S330, USB Audio Direct hardware device without any conversions plughw:CARD=S330,DEV=0 Anker PowerConf S330, USB Audio Hardware device with all software conversions default:CARD=S330 Anker PowerConf S330, USB Audio Default Audio Device sysdefault:CARD=S330 Anker PowerConf S330, USB Audio Default Audio Device front:CARD=S330,DEV=0 Anker PowerConf S330, USB Audio Front output / input surround21:CARD=S330,DEV=0 Anker PowerConf S330, USB Audio 2.1 Surround output to Front and Subwoofer speakers surround40:CARD=S330,DEV=0 Anker PowerConf S330, USB Audio 4.0 Surround output to Front and Rear speakers surround41:CARD=S330,DEV=0 Anker PowerConf S330, USB Audio 4.1 Surround output to Front, Rear and Subwoofer speakers surround50:CARD=S330,DEV=0 Anker PowerConf S330, USB Audio 5.0 Surround output to Front, Center and Rear speakers surround51:CARD=S330,DEV=0 Anker PowerConf S330, USB Audio 5.1 Surround output to Front, Center, Rear and Subwoofer speakers surround71:CARD=S330,DEV=0 Anker PowerConf S330, USB Audio 7.1 Surround output to Front, Center, Side, Rear and Woofer speakers iec958:CARD=S330,DEV=0 Anker PowerConf S330, USB Audio IEC958 (S/PDIF) Digital Audio Output dmix:CARD=S330,DEV=0 Anker PowerConf S330, USB Audio Direct sample mixing device usbstream:CARD=S330 Anker PowerConf S330 USB Stream Output ```

arecord -L on docker run

```bash narandill@ubuntu:~$ docker run --rm --name audio_test --device /dev/snd:/dev/snd --device /dev/bus/usb:/dev/bus/usb ms1design/wyoming-assist-microphone:r36.2.0-cu122 /bin/bash -c "arecord -L" null Discard all samples (playback) or generate zero samples (capture) samplerate Rate Converter Plugin Using Samplerate Library speexrate Rate Converter Plugin Using Speex Resampler jack JACK Audio Connection Kit oss Open Sound System pulse PulseAudio Sound Server upmix Plugin for channel upmix (4,6,8) vdownmix Plugin for channel downmix (stereo) with a simple spacialization usbstream:CARD=HDA NVIDIA Jetson AGX Orin HDA USB Stream Output hw:CARD=APE,DEV=0 NVIDIA Jetson AGX Orin APE, Direct hardware device without any conversions hw:CARD=APE,DEV=1 NVIDIA Jetson AGX Orin APE, Direct hardware device without any conversions hw:CARD=APE,DEV=2 NVIDIA Jetson AGX Orin APE, Direct hardware device without any conversions hw:CARD=APE,DEV=3 NVIDIA Jetson AGX Orin APE, Direct hardware device without any conversions hw:CARD=APE,DEV=4 NVIDIA Jetson AGX Orin APE, Direct hardware device without any conversions hw:CARD=APE,DEV=5 NVIDIA Jetson AGX Orin APE, Direct hardware device without any conversions hw:CARD=APE,DEV=6 NVIDIA Jetson AGX Orin APE, Direct hardware device without any conversions hw:CARD=APE,DEV=7 NVIDIA Jetson AGX Orin APE, Direct hardware device without any conversions hw:CARD=APE,DEV=8 NVIDIA Jetson AGX Orin APE, Direct hardware device without any conversions hw:CARD=APE,DEV=9 NVIDIA Jetson AGX Orin APE, Direct hardware device without any conversions hw:CARD=APE,DEV=10 NVIDIA Jetson AGX Orin APE, Direct hardware device without any conversions hw:CARD=APE,DEV=11 NVIDIA Jetson AGX Orin APE, Direct hardware device without any conversions hw:CARD=APE,DEV=12 NVIDIA Jetson AGX Orin APE, Direct hardware device without any conversions hw:CARD=APE,DEV=13 NVIDIA Jetson AGX Orin APE, Direct hardware device without any conversions hw:CARD=APE,DEV=14 NVIDIA Jetson AGX Orin APE, Direct hardware device without any conversions hw:CARD=APE,DEV=15 NVIDIA Jetson AGX Orin APE, Direct hardware device without any conversions hw:CARD=APE,DEV=16 NVIDIA Jetson AGX Orin APE, Direct hardware device without any conversions hw:CARD=APE,DEV=17 NVIDIA Jetson AGX Orin APE, Direct hardware device without any conversions hw:CARD=APE,DEV=18 NVIDIA Jetson AGX Orin APE, Direct hardware device without any conversions hw:CARD=APE,DEV=19 NVIDIA Jetson AGX Orin APE, Direct hardware device without any conversions plughw:CARD=APE,DEV=0 NVIDIA Jetson AGX Orin APE, Hardware device with all software conversions plughw:CARD=APE,DEV=1 NVIDIA Jetson AGX Orin APE, Hardware device with all software conversions plughw:CARD=APE,DEV=2 NVIDIA Jetson AGX Orin APE, Hardware device with all software conversions plughw:CARD=APE,DEV=3 NVIDIA Jetson AGX Orin APE, Hardware device with all software conversions plughw:CARD=APE,DEV=4 NVIDIA Jetson AGX Orin APE, Hardware device with all software conversions plughw:CARD=APE,DEV=5 NVIDIA Jetson AGX Orin APE, Hardware device with all software conversions plughw:CARD=APE,DEV=6 NVIDIA Jetson AGX Orin APE, Hardware device with all software conversions plughw:CARD=APE,DEV=7 NVIDIA Jetson AGX Orin APE, Hardware device with all software conversions plughw:CARD=APE,DEV=8 NVIDIA Jetson AGX Orin APE, Hardware device with all software conversions plughw:CARD=APE,DEV=9 NVIDIA Jetson AGX Orin APE, Hardware device with all software conversions plughw:CARD=APE,DEV=10 NVIDIA Jetson AGX Orin APE, Hardware device with all software conversions plughw:CARD=APE,DEV=11 NVIDIA Jetson AGX Orin APE, Hardware device with all software conversions plughw:CARD=APE,DEV=12 NVIDIA Jetson AGX Orin APE, Hardware device with all software conversions plughw:CARD=APE,DEV=13 NVIDIA Jetson AGX Orin APE, Hardware device with all software conversions plughw:CARD=APE,DEV=14 NVIDIA Jetson AGX Orin APE, Hardware device with all software conversions plughw:CARD=APE,DEV=15 NVIDIA Jetson AGX Orin APE, Hardware device with all software conversions plughw:CARD=APE,DEV=16 NVIDIA Jetson AGX Orin APE, Hardware device with all software conversions plughw:CARD=APE,DEV=17 NVIDIA Jetson AGX Orin APE, Hardware device with all software conversions plughw:CARD=APE,DEV=18 NVIDIA Jetson AGX Orin APE, Hardware device with all software conversions plughw:CARD=APE,DEV=19 NVIDIA Jetson AGX Orin APE, Hardware device with all software conversions default:CARD=APE NVIDIA Jetson AGX Orin APE, Default Audio Device sysdefault:CARD=APE NVIDIA Jetson AGX Orin APE, Default Audio Device dsnoop:CARD=APE,DEV=0 NVIDIA Jetson AGX Orin APE, Direct sample snooping device dsnoop:CARD=APE,DEV=1 NVIDIA Jetson AGX Orin APE, Direct sample snooping device dsnoop:CARD=APE,DEV=2 NVIDIA Jetson AGX Orin APE, Direct sample snooping device dsnoop:CARD=APE,DEV=3 NVIDIA Jetson AGX Orin APE, Direct sample snooping device dsnoop:CARD=APE,DEV=4 NVIDIA Jetson AGX Orin APE, Direct sample snooping device dsnoop:CARD=APE,DEV=5 NVIDIA Jetson AGX Orin APE, Direct sample snooping device dsnoop:CARD=APE,DEV=6 NVIDIA Jetson AGX Orin APE, Direct sample snooping device dsnoop:CARD=APE,DEV=7 NVIDIA Jetson AGX Orin APE, Direct sample snooping device dsnoop:CARD=APE,DEV=8 NVIDIA Jetson AGX Orin APE, Direct sample snooping device dsnoop:CARD=APE,DEV=9 NVIDIA Jetson AGX Orin APE, Direct sample snooping device dsnoop:CARD=APE,DEV=10 NVIDIA Jetson AGX Orin APE, Direct sample snooping device dsnoop:CARD=APE,DEV=11 NVIDIA Jetson AGX Orin APE, Direct sample snooping device dsnoop:CARD=APE,DEV=12 NVIDIA Jetson AGX Orin APE, Direct sample snooping device dsnoop:CARD=APE,DEV=13 NVIDIA Jetson AGX Orin APE, Direct sample snooping device dsnoop:CARD=APE,DEV=14 NVIDIA Jetson AGX Orin APE, Direct sample snooping device dsnoop:CARD=APE,DEV=15 NVIDIA Jetson AGX Orin APE, Direct sample snooping device dsnoop:CARD=APE,DEV=16 NVIDIA Jetson AGX Orin APE, Direct sample snooping device dsnoop:CARD=APE,DEV=17 NVIDIA Jetson AGX Orin APE, Direct sample snooping device dsnoop:CARD=APE,DEV=18 NVIDIA Jetson AGX Orin APE, Direct sample snooping device dsnoop:CARD=APE,DEV=19 NVIDIA Jetson AGX Orin APE, Direct sample snooping device usbstream:CARD=APE NVIDIA Jetson AGX Orin APE USB Stream Output hw:CARD=S330,DEV=0 Anker PowerConf S330, USB Audio Direct hardware device without any conversions plughw:CARD=S330,DEV=0 Anker PowerConf S330, USB Audio Hardware device with all software conversions default:CARD=S330 Anker PowerConf S330, USB Audio Default Audio Device sysdefault:CARD=S330 Anker PowerConf S330, USB Audio Default Audio Device front:CARD=S330,DEV=0 Anker PowerConf S330, USB Audio Front output / input dsnoop:CARD=S330,DEV=0 Anker PowerConf S330, USB Audio Direct sample snooping device usbstream:CARD=S330 Anker PowerConf S330 USB Stream Output ```

Other observations or issues

My Anker device does not allow to record in different rate than 48000Hz

This fails:

narandill@ubuntu:~$ arecord -D hw:2,0 -c 2 -r 44100 -f S16_LE -d 5 -t wav recording.wav
Recording WAVE 'recording.wav' : Signed 16 bit Little Endian, Rate 48000 Hz, Mono
arecord: set_params:1358: Channels count non available

This works:

narandill@ubuntu:~$ arecord -D hw:2,0 -c 2 -r 48000 -f S16_LE -d 5 -t wav recording.wav
Recording WAVE 'recording.wav' : Signed 16 bit Little Endian, Rate 48000 Hz, Mono
narandill@ubuntu:~$

My Anker want's to record only with two channels (-c 2 instead of -c 1).

This fails:

narandill@ubuntu:~$ arecord -D hw:2,0 -c 1 -r 48000 -f S16_LE -d 5 -t wav recording.wav
Recording WAVE 'recording.wav' : Signed 16 bit Little Endian, Rate 48000 Hz, Mono
arecord: set_params:1358: Channels count non available

This works:

narandill@ubuntu:~$ arecord -D hw:2,0 -c 2 -r 48000 -f S16_LE -d 5 -t wav recording.wav
Recording WAVE 'recording.wav' : Signed 16 bit Little Endian, Rate 48000 Hz, Mono
narandill@ubuntu:~$

Unfortunately I cannot directly play the recording without transcoding from S16_LE to S24_3LE sample format using sox:

This fails:

narandill@ubuntu:~$ aplay -D hw:2,0 -f S16_LE -r 48000 recording.wav
Playing WAVE 'recording.wav' : Signed 16 bit Little Endian, Rate 48000 Hz, Stereo
aplay: set_params:1352: Sample format non available
Available formats:
- S24_3LE
narandill@ubuntu:~$

This works:

narandill@ubuntu:~$ sox recording.wav -b 24 -c 2 -r 48000 -e signed-integer recording-converted.wav
narandill@ubuntu:~$ aplay -D hw:2,0 -f S24_3LE -r 48000 recording-converted.wav
Playing WAVE 'recording-converted.wav' : Signed 24 bit Little Endian in 3bytes, Rate 48000 Hz, Stereo
narandill@ubuntu:~$

Working commands:

arecord -D hw:2,0 -c 2 -r 48000 -f S16_LE -d 5 -t wav recording.wav
sox recording.wav -b 24 -c 2 -r 48000 -e signed-integer recording-converted.wav
aplay -D hw:2,0 -f S24_3LE -r 48000 recording-converted.wav
dusty-nv commented 5 months ago

jetson-containers tests – 💩 Mic/Speaker not available

@ms1design I think this is because jetson-containers does not mount devices like /dev/snd and /dev/usb for tests, it doesn't mount /dev/video devices either:

https://github.com/dusty-nv/jetson-containers/blob/e8c3cb53b2c6c02c20903f68020d20a92f66cc4f/jetson_containers/container.py#L296

My Anker device does not allow to record in different rate than 48000Hz My Anker want's to record only with two channels (-c 2 instead of -c 1).

Same here and I believe expected behavior for the Anker device, based on other sound devices I have that you also need to specify the correct sample rate and number of channels for.

Personally I don't use docker run to host jetson-containers in favour of docker-compose with below config:

Historically I have not used docker-compose in jetson-containers much because it you need to hard-code the full container name/tag in it (which require users to specify the version that is compatible with their version of JetPack-L4T - this is what autotag solves to make it easier for ppl who are unaware), and also to auto-mount devices like sound, display, cameras, ect. However with these more complex multi-container setups now using some level of orchestration, I think it might be cool to add a jetson-containers compose command where it will auto-generate the docker-compose.yml template for ppl to start with. Or if docker-compose.yml can use environment variables or subshells (like image: $(autotag wyoming-assist-microphone), that could be an option to script it dynamically.

Last summer when I re-did jetson-containers from relatively few monolithic dockerfiles into the modular build system it is now, I did initially try using docker-compose for it, but it was wholly inadequate for handling such complex builds (but once the containers are built, it is still fine to use minus the tagging/mounting issues mentioned above)

bryanhughes commented 5 months ago

@dusty-nv and @ms1design - Just wanted to add what I learned this weekend diving down the alsa pit of despair. The part that threw me was that the default driver (on my system ID 37) does resampling. Meaning that whatever I played both through aplay and my pyaudio output worked (with pyaudio when you dont specify the output/input device_id it uses default). When reading and writing directly to the sound card you have to do your own resampling. As Dusty pointed out in my post to the Dev Forum, the alsa was just a giant waste of my time (DOH).

So for ASR (using whisper) I downsample from 48000 to 16000, and then for TTS (using the Cori voice on Piper) I upsample from 22050 to 48000. Everything is working nicely now.

Thanks again @dusty-nv for you help and patience. I will respond to my post on the dev forum with the final solution.

ms1design commented 5 months ago

@dusty-nv I think it might be cool to add a jetson-containers compose command

This could be less hassle in some cases, but I think adds another layer of complexity with managing the docker-compose configurations which would be hard to maintain for the long term. For now it's only Home Assistant project which requires such orchestration efforts so I would suggest to work on that later – it's a low priority.

@bryanhughes When reading and writing directly to the sound card you have to do your own resampling.

I have the same feeling (I think it's the right "word" when facing ALSA issues) with my system – Home Assistant Wyoming voice enabled containers are communicating using webrtc or just over tcp, which makes me thinking that HA Supervisor was actually doing some resampling magic under the hood (to be confirmed).

dusty-nv commented 5 months ago

If you guys wanna see how I handle resampling from Python, I use torchaudio, which is faster than librosa and can use CUDA:

https://github.com/dusty-nv/NanoLLM/blob/d493ce48e5b0f4cf9fe795c8366a733c46c5d651/nano_llm/plugins/audio/piper_tts.py#L77

(this would be for if/when you control or patch the code in question, as opposed to trying to get another existing 3rd-party project running without modification)

ms1design commented 5 months ago

If you guys wanna see how I handle resampling from Python, I use torchaudio, which is faster than librosa and can use CUDA:

I think that there's no need for that - according to the assist-micophone docs you can also make recording with different sampling, channels and just one profile:

arecord -D plughw:CARD=S330,DEV=0 -r 16000 -c 1 -f S16_LE -t wav -d 5 test.wav
aplay -D plughw:CARD=S330,DEV=0 test.wav

The above works when device is defined following the docs: -D plughw:CARD=S330,DEV=0 on host and inside containers without any resampling. FYI @bryanhughes

bryanhughes commented 5 months ago

@dusty-nv - Thanks for all the help. @ms1design - thank you that is good to know. In my case, I am working towards real-time streaming which requires me to use the pyaudio python framework.