Минимально приемлемое качество звука для Google Speech API (и как его настроить) - PullRequest
0 голосов
/ 06 октября 2018

Я работаю с 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 на месте, кажется, прерывает поток.

Как заставить все это работать вместеи каковы мои лучшие варианты низкой пропускной способности?

1 Ответ

0 голосов
/ 06 октября 2018

Я не могу помочь вам с Google Speech API, но я записываю голос с помощью приложения для Android для использования в научном анализе, и в ходе нашего тестирования мы обнаружили, что вы можете записывать в неожиданно низких настройках, не теряя возможности предварительно сложного сложногоанализ на запись.Вот то, что мы остановились на минимальной пропускной способности, но все еще работоспособной:

mediaRecorder.setAudioSource(MediaRecorder.AudioSource.MIC);
                mediaRecorder.setOutputFormat(MediaRecorder.OutputFormat.MPEG_4);
                mediaRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.AAC);
                mediaRecorder.setAudioChannels(1);
                mediaRecorder.setAudioSamplingRate(8000);
                mediaRecorder.setAudioEncodingBitRate(64000); 

Может быть не идеальным для вас, но хорошее место для начала.Удачи!

...