我目前有一个String
包含 1 和 0 的。我想用这个字符串制作一个音频文件,最好是使用 Java 的 .WAV 格式。我该怎么做?是否有任何 API 可以写入字节来制作 .WAV ?任何教程/博客?
提前致谢 !干杯!
我认为您最好的选择是查看TargetDataLine接口。我假设您已经能够将字符串转换为 byte[] 数组。这个字节数组可以被视为原始音频数据的等价物,但我不知道它是否听起来像任何有趣的东西。使用 .wav 格式,您可以选择使用 16 位编码(每个样本两个字节)或 8 位,我想,这取决于您的字符大小。
但是考虑到每秒 44100 个样本是最常见的速率之一,我要指出,如果每个样本都是一个字母,这将需要大量的文本并在很短的时间内完成!
TargetDataLine 中的“关键”函数是该数组的索引,并且重复调用利用该索引作为 read() 方法的 read() 方法。read() 方法应该在每次调用时返回一个缓冲区的字节数。
您还需要实现的方法之一是 getFormat()。我在一个简单的“ Theremin ”合成器中使用以下代码,将字节从浮点数表(使用大约 1000 个浮点数的“波表”进行声波的单次迭代)输出到立体声、16 位、44100 fps,little-endian .wav 格式到 SourceDataLine 进行播放。
@Override
public AudioFormat getFormat()
{
AudioFormat af = new AudioFormat(
AudioFormat.Encoding.PCM_SIGNED,
44100, 16, 2, 4, 44100, false);
return af;
}
您可以从 Java 教程中了解更多信息。我会特别看一下捕获音频教程中的“设置 TargetDataLine”和“从 TargetDataLine 读取”部分。
而且,也许在讨论声音数据性质的声音教程的一开始就非常值得您花时间。