sox
可能是继续让我沮丧的一个 linux 程序。同时,我对它的功能感到敬畏,如果不能精通它,我希望能接近流利地使用它。
今天,我花了大约 2 个小时试图通过管道sox
读取字节parec
。
所述parec
字节是一个pulseaudio
“汇”。为了让它们流过管道,我使用了 askubuntu 的这个答案。
这是我一直在使用的命令:
$ parec -d telephonControl.monitor | sox -b 16 -e signed -c 2 -r 44100 - -t pulse hmm.ogg silence 1 0.50 0.1% 1 2.0 0.1% : newfile : restart
Run Code Online (Sandbox Code Playgroud)
这是我得到的错误:
sox FAIL formats: can't determine type of `-'
write() failed: Broken pipe
Run Code Online (Sandbox Code Playgroud)
更重要的是,oggenc 可以很好地解析它们:
parec -d telephonControl.monitor | oggenc -b 192 -o telephonControl.ogg --raw -
Encoding standard input to
"telephonControl.ogg" …
Run Code Online (Sandbox Code Playgroud) 我找到了一个对我不起作用的解决方案:
音频 - 在 Linux 中使用命令行工具监控麦克风电平 - 超级用户 https://superuser.com/questions/306701/monitoring-the-microphone-level-with-a-command-line-tool-in-linux
问题是他们使用最大幅度来检测声音。然而,无论录制的音频仅包含静音还是一些声音,它的价值对我来说始终是相同的。例如:
10 秒静默(可在此处下载:http://denis-aristov.ucoz.com/en/test-mic-silence.wav):
$ arecord -f S16_LE -D hw:2,0 -d 10 /tmp/test-mic-silence.wav
$ sox -t .wav /tmp/test-mic-silence.wav -n stat
Samples read: 80000
Length (seconds): 10.000000
Scaled by: 2147483647.0
Maximum amplitude: 0.999969
Minimum amplitude: -1.000000
Midline amplitude: -0.000015
Mean norm: 0.202792
Mean amplitude: 0.009146
RMS amplitude: 0.349978
Maximum delta: 0.913849
Minimum delta: 0.000000
Mean delta: 0.001061
RMS delta: 0.005564
Rough frequency: 20
Volume adjustment: 1.000
Run Code Online (Sandbox Code Playgroud)
10 秒,有一些声音(可以在这里下载:http://denis-aristov.ucoz.com/en/test-mic-sounds.wav …
我正在寻找一种能够再现音频文件(如果可能的话,wav 和 mp3)并提供一种实时、完美地改变播放速度的方法的软件。我的意思是,没有任何间隙、爆裂声或噪音。就像采样时钟平滑地改变一样。
我对保持音调恒定不感兴趣(就像这个问题:更慢或更快地播放声音文件)。相反,音高必须遵循新的速度。
我需要以编程方式更改速度,例如从原始速度的 20% 更改为 200%。
有没有什么东西已经准备好了,而无需重新发明轮子?
我可以运行这个命令:
$ play mylist.m3u
Run Code Online (Sandbox Code Playgroud)
和音乐播放。
然后我可以按 Ctrl-Z 暂停作业,并发出bg
让它在后台运行的问题。
但是,如果我然后运行disown
和exit
,即使该play
命令仍然显示在ps
.
我希望音乐继续播放。
也很有趣
我运行命令
$ play mylist.m3u &
Run Code Online (Sandbox Code Playgroud)
音乐也不会玩。作业显示为stopped
状态。
我也可以运行命令
$ nohup play mylist.m3u &
Run Code Online (Sandbox Code Playgroud)
没有音乐播放 - 工作立即停止。
然而,
$ nohup play mylist.m3u
Run Code Online (Sandbox Code Playgroud)
确实有音乐播放,但我不能像以前一样否认它。
似乎所有这些都是相关的。
大多数程序在disown
ed 或 run through时表现良好nohup
,但不是 SoX。
有谁知道为什么?
我试图将“sox”实用程序放在两个管道命令中,以将单声道 44kHz 音频文件重新采样为 16kHz 音频文件。
它适用于单个管道:
$ speexdec toto.oga - | sox -V -t raw -b 16 -e signed -c 1 -r 44.1k - -r 16k toto.wav
Run Code Online (Sandbox Code Playgroud)
但是当我添加另一个管道时,sox 实用程序会抱怨:
$ speexdec toto.oga - | sox -V -t raw -b 16 -e signed -c 1 -r 44.1k - -r 16k - | cat - > toto.wav
sox FAIL formats: can't determine type of `-'
Run Code Online (Sandbox Code Playgroud)
任何的想法 ?
我有大量的 wav 文件(超过 50 000 个),我需要将每个 wav 文件拆分为 10 秒长的部分。
几乎不可能一一做到,所以我的问题是:我怎样才能在 ffmpeg(或 sox)中做到这一点?
我查看了以下链接:使用开始和停止时间修剪音频文件
但这并不能完全回答我的问题。我的问题是:我有一个音频文件,例如abc.mp3
或abc.wav
. 我还有一个包含开始和结束时间戳的文本文件:
0.0 1.0 silence
1.0 5.0 music
6.0 8.0 speech
Run Code Online (Sandbox Code Playgroud)
sox
我想使用 Python 和/将音频分成三个部分ffmpeg
,从而产生三个单独的音频文件。
我如何使用sox
or来实现这一点ffmpeg
?
稍后我想使用 计算与这些部分相对应的MFCClibrosa
。
我在 Ubuntu Linux 16.04 安装上安装了Python 2.7
、ffmpeg
、 和。sox
是否可以将 mp4 文件转换为 mp3 或 flac,以清除过程中的背景噪音?
或者是否可以完全通过 shell 运行 audacity,没有 GUI?
我正在尝试将音频通过管道传输到 sox,但出现错误“sox FAIL 格式:`-' 的输入格式错误:未指定采样率”
parec -d alsa_output.pci-0000_00_1b.0.analog-stereo.monitor --rate=16000 --channels=1 | sox -t raw - output.wav silence 1 0.3 0.1% 1 0.3 0.1% : newfile : restart
Run Code Online (Sandbox Code Playgroud)
这是命令的输出
sox FAIL formats: bad input format for `-': sampling rate was not specified
Opening a recording stream with sample specification 's16le 1ch 16000Hz' and channel map 'mono'.
Connection established.
Stream successfully created.
Buffer metrics: maxlength=4194304, fragsize=64000
Using sample spec 's16le 1ch 16000Hz', channel map 'mono'.
Connected to device alsa_output.pci-0000_00_1b.0.analog-stereo.monitor (index: 0, suspended: …
Run Code Online (Sandbox Code Playgroud) 我有一些原始音频数据,我尝试使用 sox 进行转换,如下所示:
sox -r 44100 -b 16 -c 1 -L -e signed-integer /infiles/recording.dat /outfiles/recording.wav
Run Code Online (Sandbox Code Playgroud)
这给了我以下错误:
sox FAIL formats: bad input format for file `/infiles/recording.dat': data encoding or sample size was not specified
Run Code Online (Sandbox Code Playgroud)
你知道我缺少什么吗?我只是不明白我在这里做错了什么。
sox ×10
audio ×7
ffmpeg ×2
pipe ×2
pulseaudio ×2
alsa ×1
audacity ×1
bash ×1
command-line ×1
disown ×1
microphone ×1
nohup ×1
split ×1
ubuntu ×1
wav ×1