0

我正在编写一些 C# 代码,以使用用于语言学习工具的 Google Speech-to-Text API 自动将音频映射到文本。我有一个从人工编写的源(成绩单)解析的单词列表,还有断句信息。我有一个带有时间戳的单词列表,这些单词来自对 Google API 的调用,其中没有断句信息。我希望按顺序找到匹配的单词,这样我就可以确定句子起点和终点的时间戳。

因为这适用于多种语言(大约 60 多种),并且因为文本使用了许多 Google API 尚不理解的过时单词(我希望他们的新增强模式很快就会出现在非英语语言中),以及由于某些事物在语音中呈现不同,这需要一种模糊匹配机制。

我实际上不需要匹配所有的单词。只要每个句子有相当数量的匹配词,我就可以将这些词用作锚点,然后在音频中寻找最长的静音间隙,并将其视为断句。但即使是这个基本的单词匹配算法,我也遇到了麻烦。我认为知道源文本中的句子中断应该会​​有所帮助。一个问题是,后面的文本中可能会出现匹配的句子,这可能会使所有内容都失败。所以我需要最好的有序匹配。

有人可以指出一些代码或算法细节吗?

4

1 回答 1

0

如果您使用 Google Speech API 的最新测试版,您应该会找到您需要的断句。我正在使用 Google.Cloud.Speech.V1P1Beta1。以下是我返回的示例:(我将一些字段转换为我想要的格式。)

{
  "results": [
    {
      "text": "Welcome everyone to the township council meeting Monday, June 22nd 2020. This meeting is now called to order mayor James Belford a mantle. Can you please lead us in the salute to the flag?",
      "confidence": 0.95940184593200684,
      "wordCount": 34,
      "words": [
        {
          "word": "Welcome",
          "confidence": 0.0,
          "startTime": 2400,
          "endTime": 4400,
          "speakerTag": 0,
          "wordNum": 1
        },
        {
          "word": "everyone",
          "confidence": 0.0,
          "startTime": 4400,
          "endTime": 4600,
          "speakerTag": 0,
          "wordNum": 2

您可以通过 API 发送您知道它会遇到问题的古老单词(和短语)的列表。它将使用此列表作为识别过程的提示,然后可能会匹配您想要的音频和文本。请参阅:语音适应

于 2020-08-27T12:04:43.643 回答