将大 mp3 文件转换为 wav 时间问题

Posted

技术标签:

【中文标题】将大 mp3 文件转换为 wav 时间问题【英文标题】:Convert big mp3 files to wav timing issue 【发布时间】:2014-08-21 10:18:59 【问题描述】:

我正在处理一些大型 mp3 声音文件。从几个小时到 15 多个小时不等。 我需要将这些 mp3 文件转换成 wav。 由于文件的大小,无法加载整个文件然后进行转换。

到目前为止,我的解决方案是使用 NAudio 和 NAudio.Lame 我已修改:Mp3FileReader 和 Mp3FrameDecompressor 我的需要。这很有效,我可以一次加载 100 mb 个卡盘并进行转换。 由于我的实现,我可以加载一个 Mp3 文件,其中同一 mp3 文件中的每一帧略有不同(一帧是单声道,另一帧是同一个文件中的立体声)。

这一切都很好。

我的问题是原始 mp3 和生成的 wav 之间的时间。 一个例子是9小时34分38秒的mp3文件,生成的wav文件只有9小时21分15秒长。

这是 13 分 23 秒的损失,缩短了 3.7%!。但我找不到音频中丢失的任何内容。一切似乎都在那里,只是更短了。就像音频播放速度比 mp3 快 3.7%。这对我来说是个问题,因为我以后需要能够在 wav 和 mp3 之间进行映射,而且我更希望映射是 1 到 1。

我尝试将 Mp3 文件导入到Audacity,结果相同,Audacity 中导入的音频再次比原始 mp3 文件短 13 分钟。

这让我认为问题不在于我的代码,是否有对此行为的解释?

【问题讨论】:

我认为您不会丢失音频数据,但转换后新音频的运行速度比原始音频稍快,这就是它变短的原因。确保转换后数据的采样率与源匹配 请问您为什么要将 MP3 恢复为 wav? @DarkBee 我正在对音频进行语音识别,我使用的语音识别软件只接受 wav 音频,这就是我必须转换它的原因。 @Sam 在当前示例中,MP3 和 wav 都是 44100 hz。有没有办法让运行稍微慢一点,使其与原来的匹配? 让我很恼火的一件事是,当我通过 Audacity 运行它时,我得到的结果与通过我自己的代码运行它时的结果相同,但缩短了 13 分钟。我已经用多个文件进行了测试,并且在 Audacity 中它们都更短。 【参考方案1】:

我已经通过mp3val 传递了 MP3 文件,问题似乎不是 NAudio 和 NAudio.Lame,而是 MP3 文件本身。

MP3 文件包含错误!

然后修复是确保 MP3 文件不包含错误。

【讨论】:

【参考方案2】:

MP3 文件包含一系列 MP3 帧。 当您将 MP3 转换为 WAV 时,您的 wav 播放器正在读取正确的音频长度。 您的播放器误解了您原来的 MP3 长度 某些播放器无法正确读取 MP3 音频长度,这通常是由于修剪帧所致

【讨论】:

以上是关于将大 mp3 文件转换为 wav 时间问题的主要内容,如果未能解决你的问题,请参考以下文章

PHP - 将 .wav 文件转换为 .mp3?

Wav 到 MP3 转换

如何将任何 mp3 文件转换为 .wav 16khz mono 16bit

怎么把音乐WAV格式转换为MP3格式

如何使用 sox 将 wav 文件转换为 mp3 格式? [关闭]

iPhone - 将 mp3 转换为 wav?