Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Unable to play audio from in the Docker #484

Open
bryanhughes opened this issue Apr 19, 2024 · 23 comments
Open

Unable to play audio from in the Docker #484

bryanhughes opened this issue Apr 19, 2024 · 23 comments

Comments

@bryanhughes
Copy link

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
Copy link
Owner

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

--device /dev/snd \

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
Copy link
Contributor

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

@bryanhughes
Copy link
Author

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
Copy link
Owner

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

@bryanhughes
Copy link
Author

bryanhughes commented Apr 19, 2024

@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
Copy link
Author

bryanhughes commented Apr 19, 2024

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
Copy link
Contributor

ms1design commented Apr 19, 2024

This is somewhat related with my issues with wyoming-assist-microphone container here: #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
Copy link
Author

bryanhughes commented Apr 19, 2024

@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
Copy link
Author

bryanhughes commented Apr 19, 2024

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
Copy link
Contributor

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
Copy link
Author

bryanhughes commented Apr 20, 2024

@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
Copy link
Author

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
Copy link
Author

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
Copy link
Owner

@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
Copy link
Author

@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
Copy link
Author

@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
Copy link
Contributor

@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:

  • aplay -L
  • arecord -L

host – ✅ Mic/Speaker detected / working as expected

aplay -L on host

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

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

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

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

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

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

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

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
Copy link
Owner

dusty-nv commented Apr 22, 2024

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:

cmd = f"{sudo_prefix()}docker run -t --rm --runtime=nvidia --network=host" + _NEWLINE_

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
Copy link
Author

bryanhughes commented Apr 22, 2024

@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
Copy link
Contributor

@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
Copy link
Owner

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
Copy link
Contributor

ms1design commented Apr 22, 2024

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
Copy link
Author

bryanhughes commented Apr 22, 2024

@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.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants