Google Speech API的最低可通过音频质量(以及设置方法)

时间:2018-10-06 00:00:20

标签: android kotlin google-speech-api

我正在使用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同时包含16BIT8BIT模式,而RecognitionConfig.AudioEncoding仅包含LINEAR16选项。虽然RecognitionConfig.AudioEncoding包含一个FLAC选项(建议),但在将FLAC留在原处的同时打开AudioFormat.ENCODING_PCM_16BIT似乎会中断数据流。

如何使所有这些协同工作,我最好的低带宽选项是什么?

1 个答案:

答案 0 :(得分:1)

我无法为您提供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); 

对于您来说可能并不完美,但它是一个不错的起点。祝你好运!