gpt4 book ai didi

Java 音频不会使用正确的参数初始化 TargetDataLine

转载 作者:行者123 更新时间:2023-12-02 11:53:55 27 4
gpt4 key购买 nike

我有一个麦克风,它使用 48000 采样率、24 位和 1 个 channel 。因此,我将这些数据输入 AudioSystem.isLineSupported() 并得到 false

我尝试输入 8 位而不是 24 位,并且它有效。但音频中有一种奇怪的背景嘶嘶声,所以我猜这不是我的菜。

问题:如何调试发生的情况?我知道我提供的设置是正确的,那么它会是什么?

我正在使用的代码(是的,它是 Kotlin):

fun main(args : Array<String>) {
var line: TargetDataLine? = null
val thread = Thread(Runnable
{
val format = AudioFormat(48000f, 24, 1,
false, false)
val info = DataLine.Info(TargetDataLine::class.java, format)
if (!AudioSystem.isLineSupported(info)) {
System.out.println("Failed")
} else {
line = AudioSystem.getLine(info) as TargetDataLine
line?.open(format)
line?.start()
val ais = AudioInputStream(line)
AudioSystem.write(ais, AudioFileFormat.Type.WAVE, File("c:/temp/temp.wav"))
}
})
if (line != null) {
thread.start()
readLine()
line?.stop()
line?.close()
}
}

最佳答案

我并不完全相信您的代码中到底发生了什么。但由于您输入的是 8 位,因此可能只是音频混叠。所以这种嘶嘶声是预料之中的。

8 位深度的音频分辨率非常差。它为每个样本仅提供 256 个可能的值。其实the bit depth对信噪比有影响。 8 位深度的这个比率等于 48.16 dB,这是相当明显的嘶嘶声。

对结果格式使用 24 位不会自动改进您的 8 位源。尝试至少以 16 位输入,嘶嘶声应该消失。

关于Java 音频不会使用正确的参数初始化 TargetDataLine,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47716175/

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