How can I record the audio output using sox?

I want to record the output of Google Text to speech to a mp3 file. I need a command that I can use in Terminal. I read sox can record audio, however don't know how to set up it to record the output audio of my computer. I also prefer to automatically stop recording if the audio output was silent for at least 3 seconds... Any other tool for this purpose is acceptable.

2
задан 21 July 2020 в 12:45

1 ответ

Сначала вам нужно извлечь имя устройства вывода:

Для этого вы можете установить следующие модули:

sudo apt-get install pulseaudio-utils lame mpg123

И запустить:

pacmd list-sinks | grep -e 'name:' -e 'index' -e 'Speakers'

Вывод может быть таким:

index: 1
    name: <alsa_output.pci-0000_00_1b.0.analog-stereo>
        analog-output-speaker: Speakers (priority 10000, latency offset 0 usec, available: unknown)
index: 23
    name: <alsa_output.pci-0000_00_03.0.hdmi-surround71>

После того, как вы нашли имя, вы можете запустить следующую команду, чтобы записать вывод в mp3-файл:

parec -d alsa_output.pci-0000_00_1b.0.analog-stereo.monitor | lame -r -V0 - out.mp3

Или с помощью sox вы можете сделать следующее, однако я нашел первое решение более надежным:

sox -t pulseaudio alsa_output.pci-0000_00_1b.0.analog-stereo.monitor -t mp3 test.mp3 

Однако, если вы хотите автоматически запускать и останавливать запись, вы можете запустить:

sox -v 5 -t pulseaudio alsa_output.pci-0000_00_1b.0.analog-stereo.monitor -t mp3 test.mp3 silence 1 0.1 3% 1 3.0 3%

Или с помощью parec :

parec -d alsa_output.pci-0000_00_1b.0.analog-stereo.monitor | sox -t raw -b 16 -e signed -c 2 -r 44100 - test.ogg silence 1 0.1 3% 1 3.0 3%

Он начинает запись, когда в динамик посылается звук, и останавливается, если через 3 секунды ничего не принимается. для получения дополнительной информации о sox обратитесь к справочной странице sox в linux

2
ответ дан 30 July 2020 в 22:04

Другие вопросы по тегам:

Похожие вопросы: