今天我有一个有趣的问题。

我需要为一些小宠物的音频文件转换为8位的样本(0-255值)的列表。我写的MC6800芯片组,将需要这些声音时播放的汇编程序。我计划包括与该程序将循环通过当一个函数被调用的8位采样的阵列。

有谁知道一种音频文件(WAV / MP3)转换成逗号列表分隔8位文本样本值?此相对的方法,或者什么?

非常感谢你提前!

有帮助吗?

解决方案

可以使用命令行“袜”工具或Audacity的音频编辑器将文件转换成原始的,无符号的8位单声道的音频文件。

在Audacity的1.3或更高版本,然后打开音频选择导出,选择“波浪,AIFF,和其他非压缩类型”的格式,然后单击选项... - 然后选择“其他...”的格式, “RAW”为标题,和符号8位PCM作为编码。 (对不起,无符号不可用。)

从命令行中,尝试用-c 1 Sox为1个通道,-t原料为无标头,-u为无符号的线性,和-1每个样品1个字节。

然后你可以使用像“hexdump都”的工具转储出来的文件为数字的字节并将其粘贴到您的代码。

其他提示

如果 SOX 没有它,你将不得不使用它来生成原始(无头)文件和原始文件转换为逗号分隔自己。

编辑:SOX具有“原始文本数据”作为其格式中的一种,从网页。你可以把它转换成声音文件以无符号8位线性样本第一遍,然后可能会得到正是你想要使用此选项为输出的输出。

有关的.wav这是一个非常简单的过程。你可以用谷歌搜索很容易地找到.WAV规范。它包括一个头然后简单原始样本。你应该通过所有样本读取头第一,然后循环。通常他们是16个样本,所以你要从范围-32768归他们32767到您的0-255范围。我起初认为简单的缩放。如果这不是成功的,也许找到实际的最小和最大的样本当中,并相应地调整你的规模。

好了很多取决于你的音频格式。波格式,例如,由未压缩隔行PCM数据。

即,对于一个8位的立体声文件中的每个样品将被安排如下:

[左样品1] [右样品1] [左样品2] [右样品2] ... [左采样n] [右样本n]。

即,每个8位的立体声样本被存储在2个字节。 1,用于右侧的左声道和1。这是数据格式的声音硬件很可能要求。

一个16比特或24比特的音频文件将在每个方式工作,但在左右样品将每个,分别为2或3个字节。

显然,一个波形文件具有在它extyra信息的负载。它遵循RIFF格式。你可以在上面找到信息和“块”波形文件使用等场所www.wotsit.org。

要解压缩的MP3更为复杂。你最好身上得到一个解压缩的保持和对MP3编码的音频运行它。它将从另一侧吐出PCM数据如上述。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top