我已经尝试将大量数据(大约900 MB)转换为可听文件格式几天了。我已经获得了一个.dat文件,其中包含9亿个浮点样本(每行一个),代表90 MHz的10 MHz音乐。
我下采样到40 KHz,但现在我不知道怎么可能听到那些字节中隐藏的音频。我在Linux环境中编写C ++程序,但如果有人知道如何使用Matlab,Octave,Python,Audacity,MPlayer或任何其他工具完成此任务,请出来发言:)任何数量的贡献都是非常感谢。
head -n 5 ~/input.dat -2.4167 -7.5322e-016 -0.2283 0.13581 -0.51926
答案 0 :(得分:1)
wav file format是一个相当简单的。
您只需要编写该链接中定义的44字节标题块,然后将数据转换为整数。
答案 1 :(得分:1)
将您的采样率定位到44100赫兹(或48000,22050,11025或8000赫兹)
将音频样本转换为16位有符号整数(-32768到+32767)。
按照WAV文件合成的说明操作: WAV File Synthesis From Scratch - C
答案 2 :(得分:1)
如果您有一个字节序列并想将其转换为音频,那么您需要做的就是为它写一个标题。既然您提到可以使用MatLAB
,我建议使用wavwrite
命令。它简单,经过试验和测试,非常适合原型设计。以下是文档的链接:
http://www.mathworks.in/help/matlab/ref/wavwrite.html
以下是您使用wavwrite
时可能需要采取的一些步骤
- 由于输入数据是浮点数,因此请将文件中的数据缩放到[-1,1]范围内
- 一旦数据被缩放插入并突然进入函数调用
- 使用wavplay
命令播放wav文件。
答案 3 :(得分:1)
WAV允许浮点采样数据和各种采样率(1Hz至4.2GHz,以1Hz为增量,如果存储器可用)。
您不需要为转换为整数值而烦恼。只需适当设置WAV文件的标题,并在数据部分中将32位浮点数写为二进制数据。
从存储角度来看,10MHz采样率对于WAV文件来说没有问题。但是,播放需要转换为硬件可以处理的内容。这些天的上限通常为96或192 kHz。