如何使用 sox 录制音频输出?

如何使用 sox 录制音频输出?

我想将 Google 文本转语音的输出录制到 mp3 文件中。我需要一个可以在终端中使用的命令。我读到sox可以录制音频,但不知道如何设置它来录制我电脑的输出音频。我还希望如果音频输出至少 3 秒无声,则自动停止录制...任何其他用于此目的的工具都是可以接受的。

答案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 的更多信息,请参阅Linux 中的 sox 手册页

答案2

我不知道为什么,但是这些解决方案都对我不起作用。我最终通过安装解决了我的问题:https://chromewebstore.google.com/detail/audio-voice-recorder/deadjnaenmndpdpakgchpbedlcdmmoai (但我只需要从 chrome 录制输出的音频)。我留下评论是因为有人处于同样的情况。

相关内容