Skip to main content

in reply to Eric K3FNB (they/them)

How in the world do I do that, though? dsd doesn't support reading WAV files, DSD+ is a Windows application, and dsd-fme seems to not support reading files at all despite claiming being able to.
% file untitled.wav 
untitled.wav: RIFF (little-endian) data, WAVE audio, Microsoft PCM, 16 bit, mono 48000 Hz

% dsd-fme -i untitled.wav                
 β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ•—  β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ•—β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ•—    β€ƒβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ•—β–ˆβ–ˆβ–ˆβ•—   β–ˆβ–ˆβ–ˆβ•—β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ•—
 β–ˆβ–ˆβ•”β•β•β–ˆβ–ˆβ•—β–ˆβ–ˆβ•”β•β•β•β•β•β–ˆβ–ˆβ•”β•β•β–ˆβ–ˆβ•—β€ƒβ€ƒ  β–ˆβ–ˆβ•”β•β•β•β•β•β–ˆβ–ˆβ–ˆβ–ˆβ•— β–ˆβ–ˆβ–ˆβ–ˆβ•‘β–ˆβ–ˆβ•”β•β•β•β•β•
 β–ˆβ–ˆβ•‘  β–ˆβ–ˆβ•‘β•šβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ•— β–ˆβ–ˆβ•‘  β–ˆβ–ˆβ•‘β€ƒβ€ƒ  β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ•—  β–ˆβ–ˆβ•”β–ˆβ–ˆβ–ˆβ–ˆβ•”β–ˆβ–ˆβ•‘β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ•—  
 β–ˆβ–ˆβ•‘  β–ˆβ–ˆβ•‘ β•šβ•β•β•β–ˆβ–ˆβ•—β–ˆβ–ˆβ•‘  β–ˆβ–ˆβ•‘β€ƒβ€ƒ  β–ˆβ–ˆβ•”β•β•β•  β–ˆβ–ˆβ•‘β•šβ–ˆβ–ˆβ•”β•β–ˆβ–ˆβ•‘β–ˆβ–ˆβ•”β•β•β•  
 β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ•”β•β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ•”β•β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ•”β•β€ƒβ€ƒ  β–ˆβ–ˆβ•‘     β–ˆβ–ˆβ•‘ β•šβ•β• β–ˆβ–ˆβ•‘β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ•—
 β•šβ•β•β•β•β•β• β•šβ•β•β•β•β•β• β•šβ•β•β•β•β•β•     β•šβ•β•     β•šβ•β•     β•šβ•β•β•šβ•β•β•β•β•β•β•
Build Version: AW 2025-162-g86b8900 
MBElib Version: 1.3.0
CODEC2 Support Enabled
Audio In Device: untitled.wav
Err: 6; Connection refused;

Input/Output options:
  -i <device>   Audio input device (default is pulse)
                /dev/dsp for OSS audio (Depreciated: Will require padsp wrapper in Linux) 
                pulse for pulse audio signal input 
                pulse:6 or pulse:virtual_sink2.monitor for pulse audio signal input on virtual_sink2 (see -O) 
                rtl for rtl dongle (Default Values -- see below)
                rtl:dev:freq:gain:ppm:bw:sq:vol for rtl dongle (see below)
                tcp for tcp client SDR++/GNURadio Companion/Other (Port 7355)
                tcp:192.168.7.5:7355 for custom address and port 
                m17udp for M17 UDP/IP socket bind input (default host 127.0.0.1; default port 17000)
                m17udp:192.168.7.8:17001 for M17 UDP/IP bind input (Binding Address and Port
                filename.bin for OP25/FME capture bin files
                filename.wav for 48K/1 wav files (SDR++, GQRX)
                filename.wav -s 96000 for 96K/1 wav files (DSDPlus)
                (Use single quotes '/directory/audio file.wav' when directories/spaces are present)
in reply to Neil E. Hodges

Okay, this seems to be technically correct, but it's net decoding anything. :(
% sox untitled.wav -t raw - | dsd -i- -w decoded.wav
Digital Speech Decoder 1.7.0-dev (build:-128-NOTFOUND)
mbelib version 1.3.0
Writing audio to file decoded.wav
Audio In Device: -

Total audio errors: 0
Total header errors: 0
Total irrecoverable header errors: 0

+P25 BER estimate: 0.00%
-P25 BER estimate: 0.00%

Exiting.
% ls -lh decoded.wav 
-rw-r--r-- 1 <> users 44 Jul  9 08:43 decoded.wav
% cat decoded.wav 
RIFF$WAVEfmt @>data% 
in reply to Neil E. Hodges

I'm unsure. I think you can pipe it into dsd. I had more luck with dsdcc.

You may need to convert the wav to the correct bitrate. I'm not sure

in reply to Eric K3FNB (they/them)

Finally got something that's voice, though it's unintelligible.

sox untitled.wav -t raw - | dsdccx -i- -o- | ffmpeg -f s16le -ar 8k -ac 1 -i pipe: decoded.wav

According to here, those are the correct input and output formats:
  • Input as S16LE samples at a fixed rate of 48kS/s
  • Audio output as S16LE samples at 8kS/s rate directly out of mbelib or upsampled to 48kS/s
in reply to Neil E. Hodges

it could be encrypted. Does it sound like someone rustling around in their backpack?

This is a sample I captured of AES256 encrypted DMR voice
https://next.ericcodes.io/s/Eir5iLTtnikoGFK

⇧