我有一个应用程序可以记录来自用户麦克风的语音样本并将其上传到服务器,然后由服务器对其进行处理。看来我必须使用以下参数进行记录以避免 IllegalArgumentException
:
Encoding encoding = AudioFormat.Encoding.PCM_SIGNED;
float sampleRate = 44100.0F;
int sampleSizeInBits = 16;
int channels = 2;
int frameSize = 4;
float frameRate = 44100.0F;
boolean bigEndian = false;
但我需要以 16khz 而非 44.1 的频率录制它(我假设是采样率和帧率)并且它必须是单声道(1 声道)。 PCM 签名也是强制性的,这样很好。 (服务器非常挑剔,我无法对其进行任何更改。)如何使用 Java 转换它?
我通过 HttpClient 将音频文件作为 Filebody 提交给 servlet,将其保存在服务器上,然后进行处理。
最佳答案
这里有一些很好的链接供您自己开始使用:
或者(为了快速使用)这里的免费库是您想要的:
关于java - 在 Java 中将音频从 44.1kHz 下采样到 16kHz,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11421874/