向 Speech-to-Text API 提供数据的最佳实践

本文档包含有关如何向 Speech-to-Text API 提供语音数据的建议。这些指导准则旨在提高操作效率和准确性,同时保证服务的合理响应时间。如果发送到该服务的数据在本文档中所述的参数范围内,则使用 Speech-to-Text API 可以达到最佳效果。

如果您遵循了这些准则,但没有从此 API 获得预期的结果,请参阅问题排查和支持

为达到最佳效果… 如果可能,请避免…
以 16000 Hz 或更高的采样率采集音频。 采样率较低可能会降低准确性。但是,应避免重新采样。例如,电话中的原生采样率通常为 8000 Hz,这也是应该发送到该服务的采样率。
使用无损编解码器录制和传输音频。建议使用 FLACLINEAR16 在录制或传输过程中使用 mp3、mp4、m4a、mu-law、a-law 或其他有损编解码器可能会降低准确性。如果您的音频已经采用了不受此 API 支持的编码,请将其转码为无损 FLACLINEAR16。如果您的应用必须使用有损编解码器以节省带宽,我们建议使用 AMR_WBOGG_OPUSSPEEX_WITH_HEADER_BYTE 编解码器(排名分先后)。
识别器旨在忽略背景音和噪音而不进行额外的降噪。但是,为达到最佳效果,请将麦克风放置在尽可能靠近用户的位置,特别是存在背景噪音时。 过度的背景噪音和回声可能会降低准确性,特别是在还使用了有损编解码器的情况下。
如果您采集多个人的音频,并且每个人都在单独的声道上录制,请分别发送每个声道以获得最佳识别结果。但是,如果所有扬声器都混合在一个声道录制中,请按原样发送录制内容。 多个人同时讲话或以不同的音量讲话可能会被识别为背景噪音,并因此而被忽略。
使用字词和短语提示将名称和术语添加到词汇表中,提高特定字词和短语的准确性。 识别器有一个非常庞大的词汇表,但不在词汇表中的术语和专有名词将无法被识别。
对于简短的查询或命令,请使用 StreamingRecognize 并将 single_utterance 设置为 true。这可以优化对短话语的识别,同时还可以最大限度地缩短延迟。 对简短的查询或命令使用 RecognizeLongRunningRecognize

采样率

如果可能,请将音频源的采样率设置为 16000 Hz。否则,请将 sample_rate_hertz 设置为与音频源的原生采样率一致(而不是重新采样)。

帧大小

流式传输识别可在从麦克风或其他音频源采集音频时实时识别音频。音频流会拆分为帧并以连续的 StreamingRecognizeRequest 消息的形式发送。任何帧大小都可以接受。 较大的帧效率更高,但延迟时间会有所延长。为了在延迟时间和效率之间实现达到平衡,建议您使用 100 毫秒的帧大小。

音频预处理

最好使用品质良好的麦克风并将其放置在适当位置,以便提供尽可能纯净的音频。但是,在将音频发送到服务之前对其应用降噪信号处理通常会降低识别准确性。该服务旨在处理嘈杂音频。

为达到最佳效果,请注意以下事项:

  • 将麦克风放置在尽可能靠近讲话人的位置,尤其是当存在背景噪音时。
  • 避免音频剪辑。
  • 不要使用自动增益控制 (AGC)。
  • 应停用所有降噪处理。
  • 听听一些样本音频。该音频应该听起来很清晰,没有失真或意外的噪音。

请求配置

请务必准确地描述随您的请求一起发送到 Speech-to-Text API 的音频数据。确保该请求的 RecognitionConfig 描述了正确的 sampleRateHertzencodinglanguageCode,从而保证为该请求实现最准确的转录和结算。