File 将WAV文件转换为TXT文件

File 将WAV文件转换为TXT文件,file,audio,file-conversion,sox,audacity,File,Audio,File Conversion,Sox,Audacity,我有一个8位的WAV文件,我想转换成一个普通的TXT文件。重要的是,生成的TXT文件只包含0到255之间的数字,表示每个样本的值 当然,像-128到128这样的值也可以,因为根据需要对所有内容进行转换/规范化应该没什么大不了的 我曾尝试使用Audacity导出到不同的无头原始格式,但可用的编码不是我想要的 即使这个问题可能有点奇怪(我需要一些艺术项目的文件),我会感谢任何帮助 首先是一个示例文件: sox -n -r 8k -b 8 test.wav synth 0.02 sine 400 fa

我有一个8位的WAV文件,我想转换成一个普通的TXT文件。重要的是,生成的TXT文件只包含0到255之间的数字,表示每个样本的值

当然,像-128到128这样的值也可以,因为根据需要对所有内容进行转换/规范化应该没什么大不了的

我曾尝试使用Audacity导出到不同的无头原始格式,但可用的编码不是我想要的

即使这个问题可能有点奇怪(我需要一些艺术项目的文件),我会感谢任何帮助

首先是一个示例文件:

sox -n -r 8k -b 8 test.wav synth 0.02 sine 400 fade t 0 0 0.02 norm
这将创建一个0.02秒长的400Hz正弦音调,从开始到结束线性衰减。它存储为8位精度、8kHz采样率、单通道WAV文件

至于将其转换为[0255]范围内的一系列样本值,您使用的是原始无头格式,可以使用sox生成,如下所示:

sox -V test.wav -e unsigned test.raw
sox -V test.wav -t raw -e unsigned - | hexdump -v -e '1/1 "%03u "' > test.txt
head -c 64 test.txt
# 132 169 205 233 251 255 250 230 203 167 128 090 057 030 014 009
但是,如果在文本编辑器中打开生成的
.raw
文件,它看起来就像一堆废话。要解决此问题,我们可以通过
hextump
实用程序发送if,将数据转换为更可读的形式:

hexdump -v -e '1/1 "%03u "' test.raw > test.txt
据我所知(我昨天才了解了
hextump
,所以不要把我的话当作福音):
-v
确保所有输出都是显式编写的(否则重复都用星号表示),
-e
允许您创建自己的格式字符串(单引号内的内容):
1/1
以“束”的形式对数据进行排序,每束一个字节,
“%03u”
确保每个“束”都表示为一个零填充的三位无符号十进制数。还添加了一个空格来分隔每个“束”

或者,第一个命令可以通过管道直接传输到第二个命令,如下所示:

sox -V test.wav -e unsigned test.raw
sox -V test.wav -t raw -e unsigned - | hexdump -v -e '1/1 "%03u "' > test.txt
head -c 64 test.txt
# 132 169 205 233 251 255 250 230 203 167 128 090 057 030 014 009
test.txt的内容如下所示:

sox -V test.wav -e unsigned test.raw
sox -V test.wav -t raw -e unsigned - | hexdump -v -e '1/1 "%03u "' > test.txt
head -c 64 test.txt
# 132 169 205 233 251 255 250 230 203 167 128 090 057 030 014 009

要删除零填充,只需从
hextump
命令中删除'03'


我应该补充一点,
hextump
是一个BSD程序,因此在*NIX系统上非常普遍,但我不知道它在Windows上的等价物是什么

谢谢,我想这正是我需要的!我也希望这样做,但是我的
.wav
文件有32位带符号整数样本,我希望每行有一个值(不像您的那样用空格分隔),所以我使用
'/4%I\r\n'
作为我的
hextdump
格式字符串。