1和0是java中的音频文件

时间:2011-08-09 10:40:30

标签: java jmf javasound wav

我目前有String,其中包含1和0。我想用这个字符串制作一个音频文件,最好是用.WAV格式的Java。我该怎么做呢?是否有任何API可以写入字节来制作.WAV?任何教程/博客?

提前致谢!干杯!

2 个答案:

答案 0 :(得分:1)

This是Java第三方Sound API,它有许多examples可供您使用。在Sun Java API中,您可以浏览here

以下是关于java声音API的Stack Question

答案 1 :(得分:1)

我认为最好的办法是查看TargetDataLine界面。我假设您已经能够将字符串转换为byte []数组。这个字节数组可以被视为原始音频数据的等价物,但我不知道它是否听起来像任何有趣的东西。使用.wav格式,您可以选择使用16位编码(每个样本两个字节)或8位,我想,这取决于您的字符大小。

但是考虑到每秒44100个样本是最常见的速率之一,我会指出,如果每个样本都是一个字母,这将需要很多时间的文本!

TargetDataLine中的“key”函数是此数组的索引,并且重复调用使用此索引作为read()方法的read()方法。每次调用时,read()方法都应该返回缓冲区的字节值。

您需要实现的方法之一是getFormat()。我在一个简单的“Theremin”合成器中使用以下代码,从表浮点(使用大约1000个浮点数的“波表”,用于声波的单次迭代)输出字节到16 -bit,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教程中了解更多信息。我将特别关注Capturing Audio教程中的“设置TargetDataLine”和“从TargetDataLine读取”部分。

但是,也许在讨论声音数据性质的sound tutorials的开头可能非常值得你花时间。