У меня есть телефонный модем (SIM5320EVB), который передает голосовые данные на ttyUSB0 в формате PCM с 1600 байтами каждые 100 мс. Я могу видеть данные на minicom. Как захватить данные PCM в Linux (я использую Ubuntu) и прослушать их вживую на лету или хотя бы сохранить и воспроизвести данные? Доступно ли какое-либо приложение или API? Если подход хотя бы будет предложен, я попытаюсь разработать его.
Как захватить голосовые данные PCM через последовательный порт и обработать?
Ответы (2)
cat /dev/ttyUSB0 > my_cap_file
# make some noise for 5s for example, then hit ^C
затем получите Audacity и попробуйте открыть с его помощью свой файл, пробуя разные входные форматы. Вы должны быть в состоянии услышать звук, который вы произвели, если угадаете правильный формат.
cat /dev/ttyUSB0 > /dev/pcm0
. Я не знаю, как установить PCM0 на 8 кГц
- person zed_0xff; 15.12.2011
/dev/pcmX
создаются драйвером ядра для вашей звуковой карты AFAIK
- person zed_0xff; 16.12.2011
Установите sox
для команды play
и используйте: play -r 8000 -c 1 -t raw -e signed-integer -b 16 /dev/ttyUSB0
. То есть: битрейт 8 кГц, 1 канал (моно), необработанные данные (PCM), формат — целое число со знаком шириной 16 бит, и данные могут быть прочитаны с ttyUSB0.
Для этого требуется sox
, чтобы иметь возможность воспроизводить аудио в вашей системе; У меня был успех с pulseaudio
для базовой звуковой системы.
Возможно, вам потребуется изменить размер буфера для play
. По умолчанию он буферизует данные, что создает небольшую, но очень заметную задержку.