在 Ubuntu 中转换音频文件采样率的脚本

Posted

技术标签:

【中文标题】在 Ubuntu 中转换音频文件采样率的脚本【英文标题】:Script to convert sample rate of audio file in Ubuntu 【发布时间】:2020-07-24 16:20:58 【问题描述】:
ls -lrt *wav|wc -l --> 2160

获得了大约 2k 个音频文件,采样率为 8k。需要制作一个脚本将所有文件转换为 16k 采样率。现在使用 SOX 一次转换一个文件。 例如。 :-

sox 9560850166.wav -r 16000 -b 16 -c 1 file1.wav

需要一个脚本,以便从目录中选择下一个音频文件,并完成 SOX 以更改采样率,并将使用新文件名(如 file1.wav、file2.wav 等)保存。 .

【问题讨论】:

这能回答你的问题吗? How to loop over files in directory and change path and add suffix to filename 是的先生,谢谢你,参考帮助。 【参考方案1】:

从包含波形文件的目录中运行以下 for 循环

a=0;
for i in `ls *.wav`;
do

let a++;
echo "Processing file $i"
sox $i -r 16000 -b 16 -c 1 file$a.wav 

done

【讨论】:

谢谢您,先生,我已经制作了一个脚本,但会保留您的以备将来使用。【参考方案2】:

您不需要脚本,find 和 exec 的这种组合就可以完成这项工作 使用以下命令

find ./ -name "*wav" -exec sox  -r 16000 -b 16 -c 1 .16000.wav \;

在创建这个新的音频文件时,应在原始文件名中附加 .16000.wav。

【讨论】:

哦,这听起来很简单,会试试,谢谢你的帮助先生。 你是个天才【参考方案3】:
#!/bin/bash
i=0;
for filename in /home/mrityunjoy/myWork/audio_files/*.wav; do
    i=$((i+1));
    sox "$filename" -r 16000 -b 16 -c 1 "file$i.wav"
done

这将在我们运行脚本的目录中提供输出。

【讨论】:

以上是关于在 Ubuntu 中转换音频文件采样率的脚本的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 AVFoundation 以正确的音高播放不同采样率的音频文件?

音频重采样实现原理

XAudio2学习之采样率转换

音频重采样

如何获得本机(硬件支持)音频采样率以避免内部采样率转换?

Python 批量转换视频音频采样率(附代码) | Python工具