数据的音频描述符

信息处理 声音的 波形相似性 可视化
2022-02-19 15:09:06

有没有办法在普通音频播放器中从数据(任何类型的数据:整数、十六进制、字符串、字符、二进制)生成波形,而无需将数据转换为音频格式?

我正在寻找一种将任意文件“编码”到音频中的方法(获取数据的音频描述符)。

2个回答

如果您想要一种简单的方法来将数字数组转换为声音,我建议您使用 Python,带有wave模块和 Numpy 数字包。

现在,如果您想在不听任何内容的情况下分析数字的频谱图,那么 Python 的 Matplotlib 可以满足您的需求。

下面是一个示例工作代码,它生成一个简单的音调,将其保存到一个 .wav 文件,并显示一个频谱图:

import numpy
import wave
from matplotlib import pyplot as plt

samplerate = 44100

# generate simple sound
sound_data = numpy.sin(numpy.linspace(0,20000,100000))*1000

# converts to a string representation (I suspect there might be a more natural way to do this)
raw = "".join((wave.struct.pack('h', item) for item in sound_data))

# saving to .wav file
filename = 'aaa.wav'
sound = wave.open(filename, 'wb')
sound.setparams((1, 2, samplerate, 1, 'NONE', 'noncompressed'))
sound.writeframes(raw)
sound.close()

# plotting spectrogram
plt.specgram(sound_data)
plt.show()

许多音频播放器可以通过预先挂起从另一个(更大?).wav 文件复制的 44 字节 WAV/RIFF 文件头来诱骗播放原始 PCM 样本数组(16 位有符号线性小端序)。相同类型(采样率、单声道/立体声等)