首页 > 解决方案 > 如何从仅包含数字的文本文件制作 wav 文件?

问题描述

使用一个双通道 10 位 A/D 转换器,我从一个设备中采集了大约 350k 个样本(每 10 毫秒一个),并将它们全部保存在一个文本文件中。由于10位,数字都在0-1023之间。

现在我想可视化这两个来源。由于数据点太多,Gnuplot 太慢了,所以我想将数据转换为二进制,然后将其作为原始数据导入 Audacity(或使用 sox 处理),但最终结果并非我所期望的。

数据文件摘录:

360  594
367  596
375  594
382  595
389  594
396  593
404  594
412  594
418  596
426  594
433  596
441  594
448  630

数据源#1 是左列,数据源#2 是右列。

在 Python 中快速破解数据点并将其转换为单独的文件:

import struct

f = open("new_data").readlines()
l = ([], [])

for line in f:
    a, b = line.split()
    l[0].append(int(a))
    l[1].append(int(b))

with open("new_1.raw", "wb") as file:
    for n in l[0]:
        file.write(struct.pack("i", n))

with open("new_2.raw", "wb") as file:
    for n in l[1]:
        file.write(struct.pack("i", n))

启动 Audacity 并导入,我发现只有 8 位无符号,这有点令人困惑,因为我的数字是 10 位(或 16)且无符号。总之,我做了两个导入:无符号 8 位 PCM 和有符号 16 位 PCM。结果在下面的屏幕截图中。

在此处输入图像描述

当然,由于位剪辑,8 位的边缘受损,而 16 位看起来要好得多。我可以找出锯齿样本的周期时间,这实际上是我想要找出的。但是,在开始写这个问题之前,我从来没有设法得到这个好的导入(因为我只尝试了 8 位导入),所以这个问题不再是一个问题,考虑到我写这个问题所花费的时间,这很遗憾.

5分钟后

现在出现了一个问题。这是我第一次使用 Audacity,所以;由于我想调查两个数据样本,都导入到 Audacity 中,我如何链接两个样本窗口,当我滚动它们中的任何一个时,使它们同时水平滚动?

标签: pythonaudacity

解决方案


推荐阅读