标签: sox

将 parec 的输出通过管道传输到 sox

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)

pipe audio pulseaudio sox

6
推荐指数
1
解决办法
1万
查看次数

如何监控麦克风音量?

我找到了一个对我不起作用的解决方案:

音频 - 在 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 …

sox microphone

5
推荐指数
1
解决办法
5239
查看次数

以编程方式实时更改播放速度(不是音调)

我正在寻找一种能够再现音频文件(如果可能的话,wav 和 mp3)并提供一种实时、完美地改变播放速度的方法的软件。我的意思是,没有任何间隙、爆裂声或噪音。就像采样时钟平滑地改变一样。

我对保持音调恒定不感兴趣(就像这个问题:更慢或更快地播放声音文件)。相反,音高必须遵循新的速度。

我需要以编程方式更改速度,例如从原始速度的 20% 更改为 200%。

有没有什么东西已经准备好了,而无需重新发明轮子?

command-line audio sox

5
推荐指数
1
解决办法
8749
查看次数

为什么“nohup”和“disown”在 SoX 上不起作用(称为“play”)

我可以运行这个命令:

$ play mylist.m3u
Run Code Online (Sandbox Code Playgroud)

和音乐播放。

然后我可以按 Ctrl-Z 暂停作业,并发出bg让它在后台运行的问题。

但是,如果我然后运行disownexit,即使该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)

确实有音乐播放,但我不能像以前一样否认它。


似乎所有这些都是相关的。

大多数程序在disowned 或 run through时表现良好nohup,但不是 SoX。

有谁知道为什么?

bash nohup sox disown

4
推荐指数
1
解决办法
1167
查看次数

两个管道之间的袜子

我试图将“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)

任何的想法 ?

pipe audio sox

4
推荐指数
2
解决办法
1万
查看次数

将大量 wav 文件拆分为小部分

我有大量的 wav 文件(超过 50 000 个),我需要将每个 wav 文件拆分为 10 秒长的部分。

几乎不可能一一做到,所以我的问题是:我怎样才能在 ffmpeg(或 sox)中做到这一点?

ffmpeg audio split sox wav

3
推荐指数
1
解决办法
8756
查看次数

使用 sox 或 ffmpeg 根据文本文件中的时间戳将音频分割为多个片段

我查看了以下链接:使用开始和停止时间修剪音频文件

但这并不能完全回答我的问题。我的问题是:我有一个音频文件,例如abc.mp3abc.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,从而产生三个单独的音频文件。

我如何使用soxor来实现这一点ffmpeg

稍后我想使用 计算与这些部分相对应的MFCClibrosa

我在 Ubuntu Linux 16.04 安装上安装了Python 2.7ffmpeg、 和。sox

ubuntu ffmpeg audio sox

3
推荐指数
1
解决办法
7289
查看次数

如何用 sox 清除背景噪音

是否可以将 mp4 文件转换为 mp3 或 flac,以清除过程中的背景噪音?

或者是否可以完全通过 shell 运行 audacity,没有 GUI?

audio sox audacity

3
推荐指数
1
解决办法
3845
查看次数

带有示例规范“s16le 1ch 16000Hz”、通道映射“mono”的流的 Sox 格式

我正在尝试将音频通过管道传输到 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)

alsa audio pulseaudio sox

3
推荐指数
1
解决办法
552
查看次数

尽管定义了所有选项,但 sox 将原始音频转换为 wav 会出错

我有一些原始音频数据,我尝试使用 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

2
推荐指数
1
解决办法
8544
查看次数

标签 统计

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