从 PCM 转换为 WAV。是不是可以?

Posted

技术标签:

【中文标题】从 PCM 转换为 WAV。是不是可以?【英文标题】:Convert from PCM to WAV. Is it Possible?从 PCM 转换为 WAV。是否可以? 【发布时间】:2014-01-15 07:38:34 【问题描述】:

我有一个 iPAD 应用程序。 此应用程序记录麦克风的声音。 项目的音频格式必须是 PCM、MP3 和 WAV 文件。 MP3 文件我从原始原始文件开始,然后使用 LAME 进行转换。 不幸的是,我没有找到任何允许我将 PCM 文件转换为 WAV 文件的示例。 我刚刚注意到,如果我将文件扩展名设置为 WAV 格式,从原始应用程序开始保存没有问题,所以我认为没有来自 PCM WAV 文件的类型转换。 对吗?

PS: 对不起我的英语...我使用谷歌翻译

【问题讨论】:

wav 文件只是一个container。 WAV 文件没有指定任何特定的音频编码。然而,最常见的编码似乎是 PCM 的一种变体:LPCM。 谢谢 .. 所以 PCM 和 WAV 文件没有区别 这并不完全正确,但实际上您可能会发现 99.9% 的 WAV 文件只包含 PCM 数据。例外情况可能是您有自定义编解码器或手机上记录的数据(例如,可能使用压缩)。 【参考方案1】:

WAV 是某种盒子。 PCM 在盒子里。有许多容器格式,例如 MP4。 MP4 可以包含音频、视频或两者兼有。它还可以包含多个视频或音频流。或压缩文件。 Zip 文件可以包含文本文件。但是 zip 文件也可以包含图像、pdf 文件……但你不能说“我怎样才能将 zip 文件转换为 zip 中的文本文件”。

如果您想将 PCM 数据转换为 WAVE 文件,您应该不会遇到很多问题,因为 WAV 文件是非常简单的文件。看看这个:

(另见WAVE PCM soundfile format。)

您首先需要该标题,然后您可以附加所有 pcm 数据(请参阅数据字段)。

【讨论】:

请注意,斯坦福链接已损坏。 也许这是当前的等效链接? soundfile.sapp.org/doc/WaveFormat【参考方案2】:

将 PCM 转换为 WAV 并不难。 PCM 和 WAV 两种格式都包含原始 PCM 数据,唯一的区别是它们的标头(wav 包含 pcm 不包含的标头)。因此,如果您只是添加 wav 标头,那么它就会起作用。只需获取 PCM 数据并在 PCM 数据之上添加 wav 标头即可。要添加带有 PCM 数据的 wav 标头,请检查此link。

【讨论】:

【参考方案3】:

我正在开发一个只接受 wav 文件的系统,但我从 amazon Polly 收到的是 pcm,所以最终这样做并解决了我的问题。希望它可以帮助某人。这是一个nodejs的例子。


    // https://github.com/TooTallNate/node-wav
    const FileWriter = require('wav').FileWriter
    
    let audiostream = bufferToStream(res.AudioStream);
    var outputFileStream = new FileWriter(`$outputFileFolder/wav/$outputFileName.wav`, 
                                sampleRate: 8000,
                                channels: 1
                            );
    audioStream.pipe(outputFileStream);
    
    function bufferToStream(binary) 
        const readableInstanceStream = new Stream.Readable(
            read() 
                this.push(binary);
                this.push(null);
            
        );
        return readableInstanceStream;
    

【讨论】:

以上是关于从 PCM 转换为 WAV。是不是可以?的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 node.js 将 .pcm 文件转换为 wav 文件?

wav格式和pcm格式怎么相互转换?

如何将wav音频文件格式为pcm转化为ima adpcm格式

将 PCM 16 位 LE 转换为 WAV

将原始PCM数据转换为RIFF WAV

wav格式编码dsd转换pcm编码