gpt4 book ai didi

java - 为了使用 FFT 算法将音频转录为频率数据,我应该使用 targetDataLine 的哪一部分?

转载 作者:行者123 更新时间:2023-11-30 07:24:30 25 4
gpt4 key购买 nike

我正在尝试找到FFT的输入,以便获取每个音频输入的时频数据。我浏览过一些网站,我知道输入应该从 targetDataLine 获取。我编写了一个程序来捕获音频数据并且它可以工作。

这是我打印targetDataLine的代码(收集音频数据后)

System.out.println
("TargetDataLine buffer size is " + targetDataLine.getBufferSize()
+ "\n" + "TargetDataLine format is "
+ targetDataLine.getFormat().toString() + "\n"
+ "TargetDataLine info is "
+ targetDataLine.getLineInfo().toString());

这是系统输出:

TargetDataLine buffer size is 8000
TargetDataLine format is PCM_SIGNED 8000.0 Hz, 16 bit, mono, 2 bytes/frame, little-endian
TargetDataLine info is interface TargetDataLine supporting 14 audio formats, and buffers of at least 32 bytes

我很困惑这个输出的哪一部分可以用于 FFT 算法。或者,我们应该从其他地方获取输入而不是 targetDataLine 吗?

感谢任何想法的帮助:)谢谢!

最佳答案

read() 方法用于从 TargetDataLine 获取数据。这会将音频数据放入缓冲区,您可以将其直接发送到 fft 分析。不知道 fft 所需的规范,您可能必须先进行一些文件/格式转换。例如,您可能必须将音频字节转换为标准化 float 。 Using Files and Format Converters Oracle 教程对此过程进行了一些介绍。第一个代码示例的注释中有一个部分,内容为“//Here,对现在位于 audioBytes 数组中的音频数据执行一些有用的操作...”这是音频流的各个字节(无论是来自 AudioInputLine 还是来自 AudioInputLine)的位置。 TargetDataLine)已公开,可以在发送到 FFT 分析之前进行操作。

关于java - 为了使用 FFT 算法将音频转录为频率数据,我应该使用 targetDataLine 的哪一部分?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36993873/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com