Я работаю с Speech API и хочу настроить службу для сред с низкой пропускной способностью.
Я заметил, что параметры качества звука настраиваются в двух местах в примере кода:
Первый в AudioEmitter.kt
fun start(
encoding: Int = AudioFormat.ENCODING_PCM_16BIT,
channel: Int = AudioFormat.CHANNEL_IN_MONO,
sampleRate: Int = 16000,
subscriber: (ByteString) -> Unit
)
А потом в MainActivity.kt
if (isFirstRequest.getAndSet(false)) {
builder.streamingConfig = StreamingRecognitionConfig.newBuilder()
.setConfig(RecognitionConfig.newBuilder()
.setLanguageCode("en-US")
.setEncoding(RecognitionConfig.AudioEncoding.LINEAR16)
.setSampleRateHertz(16000)
.build())
.setInterimResults(true)
.setSingleUtterance(false)
.build()
}
У меня есть два вопроса:
Во-первых, каково минимальное рекомендуемое качество звука для голосового API? Проводил ли Google исследование различных настроек?
Во-вторых, два образца задают качество с разными объектами, которые не обязательно совпадают. Например, AudioFormat
содержит как режим 16BIT
, так и режим 8BIT
, а RecognitionConfig.AudioEncoding
содержит только параметр LINEAR16
. И хотя RecognitionConfig.AudioEncoding
содержит параметр FLAC
(что рекомендуется), включение FLAC
при сохранении AudioFormat.ENCODING_PCM_16BIT
, похоже, прерывает поток.
Как мне заставить все это работать вместе и каковы мои лучшие варианты с низкой пропускной способностью?