gpt4 book ai didi

java - 使用 Java 的谷歌云语音

转载 作者:行者123 更新时间:2023-11-29 08:37:21 27 4
gpt4 key购买 nike

我正在尝试通过我的 Java 程序与 Google Cloud Speech API 进行通信,但出现此错误:

Exception in thread "main" com.google.api.gax.grpc.ApiException: io.grpc.StatusRuntimeException: INVALID_ARGUMENT: Invalid Wav File: Not 16 bit Linear PCM or 8 bit MULAW.

谁能帮我解决这个问题?

最佳答案

谷歌云语音 API 接受 wav 文件。不仅如此。来自文档:https://cloud.google.com/speech-to-text/docs/encoding

Note: Speech-to-Text supports WAV files with LINEAR16 or MULAW encoded audio.

根据谷歌语音转文本云网站上的语音转文本/资源,我能够上传带有 8 位 PCM 签名的 .wav 文件。转录很好。但是,如果我尝试使用他们的 Java API 上传文件,则会出现此错误。我测试了几个库,包括新的测试版。所以我同意这很奇怪。我可以在每个播放器上播放 8 位 16KHz PCM SIGNED 编码,也可以播放 8KHz,文件头没有问题,我可以上传它,但不能通过 Java API。

以下是一些可能有用的提示:如果要使用 API,则必须转换为 16 位 PCM,例如 8 位 ULAW。

为此,您可以使用 javax.sound.sampled 库。

看看这个例子:SimpleSoundCapture !您可以根据需要进行修改。提供“输出”变量 ByteArrayOutputStream 或使用 ULAW 编码记录自定义编码 wav 文件。

您可以使用此设置:

AudioFormat.Encoding encoding = AudioFormat.Encoding.ULAW; 
floatrate = 16000.0f;
int channels = 1;
int frameSize = 4;
int sampleSize = 8;
boolean bigEndian = true;

从第 2 次、第 3 次开始,Google 就能够毫无问题地识别出 ULAW 样本。有时甚至从一开始。也用 8000.0f 测试过。在使用ULAW之前,请移除speach API的RecognitionConfig对象中的setEncoding()方法,因为使用ULAW可能会引发另一个异常。

 RecognitionConfig config
= RecognitionConfig.newBuilder()
// .setEncoding(AudioEncoding.UNRECOGNIZED)
.setLanguageCode("en-US")
.setSampleRateHertz(16000)
.build();

关于java - 使用 Java 的谷歌云语音,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42950768/

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