【发布时间】:2019-03-11 12:58:46
【问题描述】:
我需要在带宽较低的环境中运行 google Speech api。
根据阅读有关最佳实践的信息,似乎我最好的选择是使用 AMR_WB 格式。
但是,以下代码不会产生异常,我在 onError(t: Throwable) 方法中没有得到任何响应,但 API 在 onNext(value: StreamingRecognizeResponse) 方法中根本没有返回任何值。
如果我将.setEncoding() 中的格式从FLAC 或AMR_WB 更改回LINEAR16,一切正常。
AudioEmitter.kt
fun start(
encoding: Int = AudioFormat.ENCODING_PCM_16BIT,
channel: Int = AudioFormat.CHANNEL_IN_MONO,
sampleRate: Int = 16000,
subscriber: (ByteString) -> Unit
)
MainActivity.kt
builder.streamingConfig = StreamingRecognitionConfig.newBuilder()
.setConfig(RecognitionConfig.newBuilder()
.setLanguageCode("en-US")
.setEncoding(RecognitionConfig.AudioEncoding.AMR_WB)
.setSampleRateHertz(16000)
.build())
.setInterimResults(true)
.setSingleUtterance(false)
.build()
【问题讨论】:
-
我认为问题可能来自您的
sampleRate或AudioEmitter。当流识别中的编码类型为FLAC时,尝试设置为44100、22050或11025。 -
也许你可以按照这个官方的故障排除程序? cloud.google.com/speech-to-text/docs/support#troubleshooting 定义问题的来源。
-
@aminography 我弄乱了这些设置,不幸的是它没有帮助。
-
@Bsquare 看了很多遍。已经尝试了我能找到的所有可能的设置组合,但仍然没有运气。看起来无论是在这里还是在云演讲论坛上,团队都完全脱离了参与。
-
您是否尝试将声音文件转换为 FLAC 或其他格式,只是为了检查它是否是您问题的关键?
标签: android kotlin google-speech-api