如何将任何mp3文件转换为.wav格式的16khz单声道16位音频文件?

51
请帮助选择将任何MP3文件转换为特殊的.wav文件的解决方案-我是一个Linux命令行工具的新手,所以现在对我来说很困难。
我需要从任何mp3文件中获得16 khz单声道16位音频属性的wav。我尝试过使用以下命令:
ffmpeg -i 111.mp3 -ab 16k out.wav,
但我得到了与mp3相同速率的wav。
请帮忙构建正确的命令行。
3个回答

112

kdazzle的解决方案基本上已经接近了目标-它仍然输出立体声wav,这是一个稍微修改过的版本,可以生成单声道:

ffmpeg -i 111.mp3 -acodec pcm_s16le -ac 1 -ar 16000 out.wav

同时,如果这是为了预处理用于 Sphinx 4 的语音数据,请参阅此处:将音频文件转换为 CMU Sphinx 4 输入


1
这会混合两个通道还是只是分割并使用第一个通道? - Aquarius Power
2
这将把两个通道混合成一个 - 我刚刚确认了。顺便说一下,在当前的Ubuntu 14.10上,ffmpeg现在更名为avconv。 - Bill
3
如果需要,在混音之前我们必须平衡通道,因为其中一个可能会变得音量太低,但总的来说它表现得非常好! - Aquarius Power
2
以下是有关ffmpeg如何处理音频通道操作的更多信息:https://trac.ffmpeg.org/wiki/AudioChannelManipulation - siannopollo
由于某些原因,我无法让它正常工作。-ar变化没有问题,但-acodec pcm_s16e似乎没有任何作用。 - Garglesoap
目前的ffmpeg(4.1.3)似乎默认使用pcm_s16le输出音频编解码器 - 我刚刚测试了两个版本(带或不带-acodec pcm_s16le),并比较了输出文件格式,结果相同。感谢您指出这一点! - Bill

10

试试这个:

ffmpeg -i 111.mp3 -acodec pcm_s16le -ar 16000 out.wav

4
需要添加"-ac 1"以获取单声道。 - Srinivas

4
请使用以下示例:
import os 
from pydub import AudioSegment
import numpy as np 
from tqdm import tqdm 

for src in tqdm (mp3_files):
    
    des = src.replace('.mp3','.wav')
    try:
        sound = AudioSegment.from_mp3(src)
        sound.set_channels(1)
        sound = sound.set_frame_rate(16000)                
        sound = sound.set_channels(1)    
        sound.export(des, format="wav")

    except:
        print(src)
        continue

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接