0

几天来,我一直在尝试将大量数据(约 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
4

4 回答 4

1

wav 文件格式是一种相当简单的格式。

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

于 2013-04-02T17:56:58.867 回答
1

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

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

请按照此处有关 WAV 文件合成的说明进行操作: WAV 文件从头开始合成 - C

于 2013-04-02T17:58:39.453 回答
1

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

如果您使用wavwrite.
- 由于您的输入数据是浮点数,因此将文件中的数据缩放到 [-1, 1] 的范围内。
- 一旦数据被缩放插入并插入函数调用。- 使用命令
播放 wav 文件。wavplay

于 2013-04-02T18:30:53.317 回答
1

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

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

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

于 2014-12-21T00:26:03.680 回答