将音频样本转换为可听文件格式
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。
【讨论】:
以上是关于将音频样本转换为可听文件格式的主要内容,如果未能解决你的问题,请参考以下文章