Мне нужно запустить API речи Google в средах с небольшой пропускной способностью.
Судя по прочтению о передовых практиках, лучше всего использовать формат 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()