gpt4 book ai didi

java - 如何使用 Java 生成高质量的 WAVE 文件

转载 作者:行者123 更新时间:2023-12-02 03:28:51 24 4
gpt4 key购买 nike

我正在尝试使用 Java Sound API 生成高质量的 WAVE 文件。

首先,我使用以下值和 8kHz 采样率。质量为128kbps。但它没有生成高质量的音频。有些单词甚至发音不清楚。

static AudioFormat.Encoding defaultEncoding = AudioFormat.Encoding.PCM_SIGNED;
static float fDefaultSampleRate = 8000;
static int nDefaultSampleSizeInBits = 16;
static int nDefaultChannels = 1;
static int frameSize = 2;
static float frameRate = 8000;
static boolean bDefaultBigEndian = false;

AudioFormat defaultFormat = new AudioFormat(defaultEncoding, fDefaultSampleRate, nDefaultSampleSizeInBits, nDefaultChannels, frameSize, frameRate, bDefaultBigEndian);
AudioInputStream GeneratedAudio = marytts.generateAudio(text); //generate audio from text
AudioInputStream audio = AudioSystem.getAudioInputStream(defaultFormat, GeneratedAudio);
AudioSystem.write(audio, AudioFileFormat.Type.WAVE, new File("FileName.wav"));

然后我使用了以下值和 44.1kHz 采样率。还显示质量为 705kbps 但问题是,当我使用这些值生成音频时,生成的音频是高质量的,但在播放音频时会出现一些噪音,例如破裂。

static AudioFormat.Encoding defaultEncoding = AudioFormat.Encoding.PCM_SIGNED;
static float fDefaultSampleRate = 44100;
static int nDefaultSampleSizeInBits = 16;
static int nDefaultChannels = 1;
static int frameSize = 2;
static float frameRate = 44100;
static boolean bDefaultBigEndian = false;

AudioFormat defaultFormat = new AudioFormat(defaultEncoding, fDefaultSampleRate, nDefaultSampleSizeInBits, nDefaultChannels, frameSize, frameRate, bDefaultBigEndian);
AudioInputStream GeneratedAudio = marytts.generateAudio(text); //generate audio from text
AudioInputStream audio = AudioSystem.getAudioInputStream(defaultFormat, GeneratedAudio);
AudioSystem.write(audio, AudioFileFormat.Type.WAVE, new File("FileName.wav"));

所以我需要知道的是如何使用这个 Java sound API 生成高质量的音频而不会产生一些背景噪音?我非常感谢任何帮助。提前致谢。

最佳答案

有很多因素可能会导致爆裂声:从过度驱动扬声器、溢出位数到数据中过大的不连续性。

对于 16 位编码(“CD 质量音频”的标准),在转换之前,所有 PCM 数据点都应位于 -32767 到 32767 的范围内(适合 short) PCM 值以字节为单位。

如果是这样,那么我接下来会检查以确保字节顺序正确,以及生成 PCM 值的算法。我不知道除了检查之外还建议进行哪些测试。对于初学者来说,也许可以尝试生成不同音量的简单正弦波,看看 PCM 值是否符合预期?

16 位、单声道、44100 fps 听起来应该不错。您所描述的裂纹有可能是一种混叠形式吗? (我通常不认为这种形式的扭曲是爆裂声。)

关于java - 如何使用 Java 生成高质量的 WAVE 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56896382/

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