将音频样本转换为可听文件格式

Posted

技术标签:

【中文标题】将音频样本转换为可听文件格式【英文标题】:Converting audio samples into an audible file format 【发布时间】:2013-04-02 17:53:17 【问题描述】:

几天来,我一直在尝试将大量数据(大约 900 MB)转换为可听文件格式。我收到了一个 .dat 文件,其中包含 9 亿个浮点样本(每行一个),代表 90 秒的 10 MHz 音乐。

我降采样到了 40 KHz,但现在我不知道如何才能听到隐藏在这些字节中的音频。我正在 Linux 环境中编写 C++ 程序,但如果有人知道如何使用 Matlab、Octave、Python、Audacity、MPlayer 或任何其他工具完成此任务,请站出来说话:) 非常感谢任何数量的贡献.

头 -n 5 ~/input.dat -2.4167 -7.5322e-016 -0.2283 0.13581 -0.51926

【问题讨论】:

谢谢大家。希望我能投票给你的答案:( 【参考方案1】:

将采样率设定为 44100 赫兹(或 48000、22050、11025 或 8000 赫兹)

将您的音频样本转换为 16 位有符号整数(-32768 到 +32767)。

按照此处有关 WAV 文件合成的说明进行操作: WAV File Synthesis From Scratch - C

【讨论】:

【参考方案2】:

wav file format 比较简单。

您只需要编写该链接中定义的 44 字节标头块,然后将您的数据转换为整数。

【讨论】:

【参考方案3】:

如果您有一个字节序列并想将其转换为音频,您需要做的就是向它写入一个标头。既然你提到你可以使用MatLAB,我会推荐wavwrite 命令。它很简单,经过试验和测试,非常适合原型制作。这是文档的链接:http://www.mathworks.in/help/matlab/ref/wavwrite.html

以下是您在使用wavwrite时可能需要采取的一些步骤。 - 由于您的输入数据是浮点数,因此将文件中的数据缩放到 [-1, 1] 的范围内。 - 一旦数据被缩放,插入函数调用。 - 使用wavplay 命令播放wav 文件。

【讨论】:

【参考方案4】:

WAV 允许浮点采样数据和宽范围的采样率(1Hz 到 4.2GHz,以 1Hz 为增量,如果有记忆的话)。

您无需费心转换为整数值。只需适当设置 WAV 文件的标头,并将 32 位浮点数作为二进制数据写入数据部分。

从存储的角度来看,10MHz 的采样率对于 WAV 文件来说是没有问题的。然而,回放需要转换为硬件可以处理的东西。现在的上限通常是 96 或 192 kHz。

【讨论】:

以上是关于将音频样本转换为可听文件格式的主要内容,如果未能解决你的问题,请参考以下文章

将音频样本转换为 AVFrame FFmpeg & C++

怎么通过ffmpeg将音频文件转换成Mp3 转

怎么通过ffmpeg将音频文件转换成Mp3 转

如何使用JS将音频文件如何转换成base64格式的

如何将m4a音频换成mp3格式

如何使用JS将音频文件如何转换成base64格式的