我需要获取.wav文件的长度.
使用:
sox output.wav -n stat
Run Code Online (Sandbox Code Playgroud)
得到:
Samples read: 449718
Length (seconds): 28.107375
Scaled by: 2147483647.0
Maximum amplitude: 0.999969
Minimum amplitude: -0.999969
Midline amplitude: 0.000000
Mean norm: 0.145530
Mean amplitude: 0.000291
RMS amplitude: 0.249847
Maximum delta: 1.316925
Minimum delta: 0.000000
Mean delta: 0.033336
RMS delta: 0.064767
Rough frequency: 660
Volume adjustment: 1.000
Run Code Online (Sandbox Code Playgroud)
如何使用grep或其他方法仅输出第二列中的长度值,即28.107375?
谢谢
我需要检查一组音频文件的持续时间.有没有一种简单的方法在unix命令行上执行此操作?
> duration *
Run Code Online (Sandbox Code Playgroud)
我有一个惊人的SoX应用程序,它有一个名为stats的选项,可以生成一组包含持续时间的音频信息.我正在寻找一种方法来获得持续时间.我对输出格式很灵活,可以是任何样本长度,hh:mm:ss或秒.后者是我的偏好.
使用Sox,如何将音频文件缩短5秒,从最后修剪?
例如,这是如何从头开始修剪文件:
sox input output trim 5000
Run Code Online (Sandbox Code Playgroud)
这是如何在结尾添加5秒的沉默:
sox input output pad 0 5000
Run Code Online (Sandbox Code Playgroud) 我为sox编译了libmad.当我尝试读取mp3时,我收到此消息:
sox FAIL util:无法加载MAD解码器库(libmad)函数"mad_stream_buffer".
我是否错误地编译了项目?
我正在使用SoX将一组wav文件修剪成16kHz,16bit,单声道wav文件(这将是其中一个初始wav文件的子集).大多数源wav文件已经设置为此规范,但是,我发现其中一些具有不同的采样率.由于它将使用ProcessBuilder在Java中自动化,我想我可以使用以下命令:
sox <source_wav> -b 16 <dest_wav> channels 1 rate 16000 trim <startTime> =<endTime>
Run Code Online (Sandbox Code Playgroud)
如果它不是16000赫兹,它只会改变采样率.它在具有相同规范的文件上做了它应该做的事情,但对于具有不同采样率的文件,我得到:
sox WARN rate: rate clipped 48 samples; decrease volume?
sox WARN dither: dither clipped 44 samples; decrease volume?
Run Code Online (Sandbox Code Playgroud)
如何在不降低音频质量的情况下解决这个问题?请注意,我对信号处理一无所知.
我有MP3文件,有时最后会沉默.我想自动删除这个沉默.从我所知,它是"完美的"沉默(0幅度),而不是背景噪音.内容的长度和沉默各不相同.
我发现了一些其它问题,有关裁剪至前30秒或裁剪到X和X + N秒使用ffmpeg.我想我可以使用类似的方法,只要我有办法找到沉默开始的时候.我将如何以编程方式执行此操作?
例如,一种可能的解决方案是使用命令找到"沉默"的开始.我期待这样的序列
end=$(ffmpeg some-command-to-find-start-of-silence)
ffmpeg -t "$end" -acodec copy -i inputfile.mp3 outputfile.mp3
Run Code Online (Sandbox Code Playgroud)
该解决方案并没有必须使用ffmpeg,但它确实需要可在Ubuntu上.
我在SoX中使用以下命令在每个静默时间超过0.3秒的地方分割许多大型音频文件:
sox -V3 input.wav output.wav silence 1 0.50 0.1% 1 0.3 0.1% : newfile : restart
Run Code Online (Sandbox Code Playgroud)
然而,这有时会在每次休息之前偶尔创建完全静音的文件并修剪音频.
我在Audacity中找到了更好的结果,但我需要分割数百个WAV文件,Audacity甚至无法同时打开10个文件而不会冻结.
如何在0.3秒的静音期结束时使用SoX或类似软件分割文件,这样静音部分仍然贴在说话结束时,但之前没有,并且没有完全静音的剪辑,除非他们从一开始就来input.wav?
当我直接从命令行运行sox时;
sox -r 8000 -c 1 <wavfilename> <mp3filename>
Run Code Online (Sandbox Code Playgroud)
我收到以下错误消息:
sox:'747a.mp3'的输出文件格式未知:文件类型'mp3'未知
我的机器正在运行CentOS操作系统.
Givent一个audio.wav录音,在开始和结束时都保持沉默至少1秒......
如何用SOX去噪?