我目前有一个包含1和0的String
。我想用这个字符串制作一个音频文件,最好是使用Java。wav格式。我该怎么做呢?是否有任何API来编写字节来制作。wav ?有教程或博客吗?
提前感谢!干杯!
这是Java第三方声音API,它有很多例子可以对你有用。Sun Java API,你可以在这里探索。
我认为您最好的选择是查看TargetDataLine接口。我假设您已经能够将字符串转换为byte[]数组。这个字节数组可以被视为原始音频数据的等效物,但我不知道它是否听起来像任何有趣的东西。对于。wav格式,您可以选择使用16位编码(每个示例两个字节)或8位编码,我想,这取决于字符的大小。
但是考虑到每秒44100个样本是最常见的速率之一,我要指出的是,如果每个样本是一个字母,这将需要在很少的时间内输入大量文本!
TargetDataLine中的"key"函数是该数组的索引,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"one_answers"从TargetDataLine读取"部分。
但是,也许声音教程的一开始就讨论了声音数据的性质,这将非常值得你花时间。