【问题标题】:Improving Google Cloud Speech-to-Text accuracy [closed]提高 Google Cloud Speech-to-Text 的准确性 [关闭]
【发布时间】:2020-07-06 20:14:11
【问题描述】:

我正在做一个需要执行以下步骤的项目:

  1. 录制语音通话 (.webm -file)
  2. 使用ffmpegwebm 文件拆分为块并将文件转换为wav
  3. 使用 SpeechRecognition -library 和 Google Cloud API 转录块

我在转录准确性方面遇到了问题,想知道是否可以做些什么来改进它。当时我将原始文件分成 30 多个块。我认为可能存在一个问题,我可能会因为拆分而丢失单词,所以我也尝试过使用 60 秒以下的更长的块,但没有注意到准确性有任何提高。 阅读我决定设置r.energy_threshold = 4000 的speechRecognition 文档,我还尝试像这样动态设置energy_treshold

with sr.AudioFile(name) as source:
    r.dynamic_energy_threshold = True
    r.adjust_for_ambient_noise(source, duration = 1)
    audio = r.record(source)

我还测试了en-USen-GB,看看是否有一些区别,但没有我想要的那么多。该程序应该适用于北欧人说的英语。如果有人在为有口音的人选择正确的语言模型方面有经验,请告诉我。

这是ffmpeg命令用于将webm文件分成块:command = ['ffmpeg', '-i', filename, '-f', 'segment', '-segment_time', '30', parts_dir + outputname + '%09d.wav']

有什么我可以做得更好的吗?我想知道质量是否不够好,谷歌会因此而陷入困境?

主要问题是我从 Google 得到了不好的结果(很多错误的词),我想知道我是否可以做些什么。

【问题讨论】:

    标签: python google-cloud-platform ffmpeg speech-recognition speech-to-text


    【解决方案1】:
    1. 直接使用 Google Speech API 并转录整个文件。拆分是个坏主意。

    2. 使用speech context 功能提高准确性。

    3. 对于电话,请使用 Google 提供的特定电话型号

    4. 使用其他可以适应您的音频和词汇的工具包。通常,对于糟糕的音频案例,开源工具包显示出比通用 Google 解决方案更好的准确性。

    5. 共享音频文件以更好地了解准确性。

    【讨论】:

    • 感谢您的建议。我尝试使用云存储桶运行整个文件,它确实提高了准确性!另一方面,对于我的应用而言,处理时间太慢了。
    【解决方案2】:

    检查 .webm 和 .wav 文件的采样率,看看您没有对文件进行上/下采样。我认为可以跳过在对 Google Speech 的请求中明确设置音频的采样率,但我怀疑如果您手动设置正确的采样率,它会提供更高的准确度。

    我同意 Nikolay 的观点,即拆分音频是个坏主意,但如果您必须这样做才能使其正常工作,您应该尝试检测 silence in the file with ffmpeg 的句点。您可以将文件拆分为 > 2-3 秒的静音,因为 Google Speech 将其解释为句子的结尾,因此它不应该影响您的结果。如果您打算提出很多请求,最好不要将音频拆分成块,例如:31 秒,因为如果您要在 29 秒时拆分,这将导致来自 Google Speech 的 3 * 15 秒收费而不是 2而是。

    【讨论】:

      猜你喜欢
      • 2019-01-23
      • 2018-01-05
      • 2019-04-16
      • 1970-01-01
      • 2012-10-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多