Мне нужно запустить google-речь 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()