Проверка точности пользовательской модели речи

В этой статье показано, как количественно измерять и повышать точность базовой модели преобразования речи в текст или точность собственных пользовательских моделей. Чтобы проверить точность, требуется аудиозаписи и данные расшифровки, помеченные человеком. Предоставьте 30 минут до 5 часов репрезентативного звука.

Внимание

При тестировании система выполнит транскрибирование. Это важно помнить, так как цены индивидуальны для каждого предложения услуги и уровня подписки. Всегда обращайтесь к официальному прайс-листу на инструменты Foundry для получения последних сведений.

Создать тест

Подсказка

Доведите пользовательские модели речи из Speech Studio на портал Microsoft Foundry. На портале Microsoft Foundry вы можете продолжить с того места, где вы остановились, подключившись к существующему ресурсу "Речь". Дополнительные сведения о подключении к существующему ресурсу службы "Речь" см. в разделе "Подключение к существующему ресурсу службы "Речь".

Вы можете проверить точность пользовательской модели, создав тест. Для выполнения теста требуется коллекция звуковых файлов и соответствующих расшифровок. Точность пользовательской модели можно сравнить с точностью базовой модели преобразования речи в текст или другой пользовательской модели. После получения результатов теста оцените частоту ошибок в словах (WER) по сравнению с результатами распознавания речи.

После отправки обучающих и тестовых наборов данных можно создать тест.

На новом портале Microsoft Foundry не создается отдельный тест точности. Оценка точности автоматически выполняется для проверочного набора данных, который вы указали на панели Проверочные данные мастера Тонкая настройка модели. Чтобы просмотреть оценки точности, см. статью "Получение результатов теста".

Выполните следующие действия, чтобы создать тест точности:

  1. Войдите в службу Speech Studio.

  2. Выберите Пользовательская речь> имя вашего проекта >Тестовые модели.

  3. Выберите Создать тест.

  4. Выберите Оценить точность >Далее.

  5. Выберите один набор данных с аудио и транскрипцией, размеченной человеком, а затем выберите Далее. Если нет доступных наборов данных, отмените настройку, а затем перейдите в меню Наборы речевых данных, чтобы загрузить наборы данных.

    Примечание.

    Важно выбрать набор акустических данных, отличный от использованного при создании модели. Такой подход позволит более реалистично оценить эффективность модели.

  6. Выберите до двух моделей для оценки, а затем нажмите кнопку Далее.

  7. Введите имя и описание теста и нажмите кнопку Далее.

  8. Просмотрите сведения о тесте, а затем нажмите кнопку Сохранить и закрыть.

Прежде чем продолжить, убедитесь, что у вас установлен и настроен Speech CLI.

Чтобы создать тест, используйте команду spx csr evaluation create. Создайте параметры запроса в соответствии со следующими инструкциями:

  • project Задайте для свойства идентификатор существующего проекта. Рекомендуется использовать это project свойство, чтобы вы также могли управлять тонкой настройкой для пользовательской речи на портале Microsoft Foundry. Чтобы получить идентификатор проекта, ознакомьтесь с идентификатором проекта для документации по REST API.
  • Задайте необходимое model1 свойство идентификатору модели, которую требуется протестировать.
  • Задайте необходимое model2 свойство идентификатору другой модели, которую требуется протестировать. Если вы не хотите сравнивать две модели, используйте одну модель для model1 и model2.
  • Задайте необходимое dataset свойство идентификатору набора данных, который требуется использовать для теста.
  • Если свойство language не задано, первая команда в интерфейсе командной строки речи устанавливает "en-US" по умолчанию. Этот параметр должен быть локалью содержимого этого набора данных. Языковые параметры позже изменить нельзя. Свойство командной строки language службы речевой обработки соответствует свойству locale в запросе и ответе JSON.
  • Задайте обязательное свойство name. Этот параметр — это имя, отображаемое на портале Microsoft Foundry. Свойство командной строки name службы речевой обработки соответствует свойству displayName в запросе и ответе JSON.

Вот пример команды Speech CLI для создания теста:

spx csr evaluation create --api-version v3.2 --project aaaabbbb-0000-cccc-1111-dddd2222eeee --dataset bbbbcccc-1111-dddd-2222-eeee3333ffff --model1 ccccdddd-2222-eeee-3333-ffff4444aaaa --model2 ddddeeee-3333-ffff-4444-aaaa5555bbbb --name "My Evaluation" --description "My Evaluation Description"

Внимание

Необходимо задать --api-version v3.2. Интерфейс командной строки службы "Речь" использует REST API, но пока не поддерживает версии позже v3.2.

Текст ответа будет получен в следующем формате:

{
  "self": "https://YourResourceName.cognitiveservices.azure.com/speechtotext/v3.2/evaluations/eeeeffff-4444-aaaa-5555-bbbb6666cccc",
  "model1": {
    "self": "https://YourResourceName.cognitiveservices.azure.com/speechtotext/v3.2/models/base/ddddeeee-3333-ffff-4444-aaaa5555bbbb"
  },
  "model2": {
    "self": "https://YourResourceName.cognitiveservices.azure.com/speechtotext/v3.2/models/base/ddddeeee-3333-ffff-4444-aaaa5555bbbb"
  },
  "dataset": {
    "self": "https://YourResourceName.cognitiveservices.azure.com/speechtotext/v3.2/datasets/bbbbcccc-1111-dddd-2222-eeee3333ffff"
  },
  "transcription2": {
    "self": "https://YourResourceName.cognitiveservices.azure.com/speechtotext/v3.2/transcriptions/ffffaaaa-5555-bbbb-6666-cccc7777dddd"
  },
  "transcription1": {
    "self": "https://YourResourceName.cognitiveservices.azure.com/speechtotext/v3.2/transcriptions/ffffaaaa-5555-bbbb-6666-cccc7777dddd"
  },
  "project": {
    "self": "https://YourResourceName.cognitiveservices.azure.com/speechtotext/v3.2/projects/aaaabbbb-0000-cccc-1111-dddd2222eeee"
  },
  "links": {
    "files": "https://YourResourceName.cognitiveservices.azure.com/speechtotext/v3.2/evaluations/dda6e880-6ccd-49dc-b277-137565cbaa38/files"
  },
  "properties": {
    "wordErrorRate1": -1.0,
    "sentenceErrorRate1": -1.0,
    "sentenceCount1": -1,
    "wordCount1": -1,
    "correctWordCount1": -1,
    "wordSubstitutionCount1": -1,
    "wordDeletionCount1": -1,
    "wordInsertionCount1": -1,
    "wordErrorRate2": -1.0,
    "sentenceErrorRate2": -1.0,
    "sentenceCount2": -1,
    "wordCount2": -1,
    "correctWordCount2": -1,
    "wordSubstitutionCount2": -1,
    "wordDeletionCount2": -1,
    "wordInsertionCount2": -1
  },
  "lastActionDateTime": "2024-07-14T21:31:14Z",
  "status": "NotStarted",
  "createdDateTime": "2024-07-14T21:31:14Z",
  "locale": "en-US",
  "displayName": "My Evaluation",
  "description": "My Evaluation Description",
  "customProperties": {
    "testingKind": "Evaluation"
  }
}

Свойство верхнего уровня self в теле ответа представляет собой URI оценки. Используйте этот URI для получения сведений о проекте и результатах теста. Этот URI также используется для обновления или удаления оценки.

Для получения справки по работе с оценками в CLI службы "Речь" выполните следующую команду:

spx help csr evaluation

Чтобы создать тест, используйте операцию Evaluations_Create преобразования речи в текстовый REST API. Создайте текст запроса в соответствии со следующими инструкциями:

  • project Задайте для свойства идентификатор существующего проекта. Рекомендуется использовать это project свойство, чтобы вы также могли управлять тонкой настройкой для пользовательской речи на портале Microsoft Foundry. Чтобы получить идентификатор проекта, ознакомьтесь с идентификатором проекта для документации по REST API.
  • Задайте для свойства testingKind значение Evaluation в customProperties. Если не указать Evaluation, тест рассматривается как тест проверки качества. Независимо от того, задано ли свойство как testingKind, Evaluation, или не задано, вы можете получить доступ к оценкам точности через API, но не на Inspection.
  • Задайте обязательному свойству model1 URI модели, которую вы хотите протестировать.
  • Задайте для обязательного свойства model2 значение URI еще одной модели, которую нужно протестировать. Если вы не хотите сравнивать две модели, используйте одну модель для model1 и model2.
  • Задайте для обязательного свойства dataset значение URI набора данных, который нужно использовать для тестирования.
  • Задайте обязательное свойство locale. Это свойство должно содержать локаль содержимого набора данных. Языковые параметры позже изменить нельзя.
  • Задайте обязательное свойство displayName. Это свойство — это имя, отображаемое на портале Microsoft Foundry.

Выполните HTTP-запрос POST, используя URI, как показано в следующем примере. Замените YourSpeechResoureKey на ключ ресурса Speech, замените YourResourceName на имя ресурса Speech и задайте свойства тела запроса, как описано ранее.

curl -v -X POST -H "Ocp-Apim-Subscription-Key: YourSpeechResoureKey" -H "Content-Type: application/json" -d '{
  "model1": {
    "self": "https://YourResourceName.cognitiveservices.azure.com/speechtotext/v3.2/models/ddddeeee-3333-ffff-4444-aaaa5555bbbb"
  },
  "model2": {
    "self": "https://YourResourceName.cognitiveservices.azure.com/speechtotext/v3.2/models/base/ddddeeee-3333-ffff-4444-aaaa5555bbbb"
  },
  "dataset": {
    "self": "https://YourResourceName.cognitiveservices.azure.com/speechtotext/v3.2/datasets/bbbbcccc-1111-dddd-2222-eeee3333ffff"
  },
  "project": {
    "self": "https://YourResourceName.cognitiveservices.azure.com/speechtotext/v3.2/projects/aaaabbbb-0000-cccc-1111-dddd2222eeee"
  },
  "displayName": "My Evaluation",
  "description": "My Evaluation Description",
  "customProperties": {
    "testingKind": "Evaluation"
  },
  "locale": "en-US"
}'  "https://YourResourceName.cognitiveservices.azure.com/speechtotext/v3.2/evaluations"

Текст ответа будет получен в следующем формате:

{
  "self": "https://YourResourceName.cognitiveservices.azure.com/speechtotext/v3.2/evaluations/eeeeffff-4444-aaaa-5555-bbbb6666cccc",
  "model1": {
    "self": "https://YourResourceName.cognitiveservices.azure.com/speechtotext/v3.2/models/base/ddddeeee-3333-ffff-4444-aaaa5555bbbb"
  },
  "model2": {
    "self": "https://YourResourceName.cognitiveservices.azure.com/speechtotext/v3.2/models/base/ddddeeee-3333-ffff-4444-aaaa5555bbbb"
  },
  "dataset": {
    "self": "https://YourResourceName.cognitiveservices.azure.com/speechtotext/v3.2/datasets/bbbbcccc-1111-dddd-2222-eeee3333ffff"
  },
  "transcription2": {
    "self": "https://YourResourceName.cognitiveservices.azure.com/speechtotext/v3.2/transcriptions/ffffaaaa-5555-bbbb-6666-cccc7777dddd"
  },
  "transcription1": {
    "self": "https://YourResourceName.cognitiveservices.azure.com/speechtotext/v3.2/transcriptions/ffffaaaa-5555-bbbb-6666-cccc7777dddd"
  },
  "project": {
    "self": "https://YourResourceName.cognitiveservices.azure.com/speechtotext/v3.2/projects/aaaabbbb-0000-cccc-1111-dddd2222eeee"
  },
  "links": {
    "files": "https://YourResourceName.cognitiveservices.azure.com/speechtotext/v3.2/evaluations/dda6e880-6ccd-49dc-b277-137565cbaa38/files"
  },
  "properties": {
    "wordErrorRate1": -1.0,
    "sentenceErrorRate1": -1.0,
    "sentenceCount1": -1,
    "wordCount1": -1,
    "correctWordCount1": -1,
    "wordSubstitutionCount1": -1,
    "wordDeletionCount1": -1,
    "wordInsertionCount1": -1,
    "wordErrorRate2": -1.0,
    "sentenceErrorRate2": -1.0,
    "sentenceCount2": -1,
    "wordCount2": -1,
    "correctWordCount2": -1,
    "wordSubstitutionCount2": -1,
    "wordDeletionCount2": -1,
    "wordInsertionCount2": -1
  },
  "lastActionDateTime": "2024-07-14T21:31:14Z",
  "status": "NotStarted",
  "createdDateTime": "2024-07-14T21:31:14Z",
  "locale": "en-US",
  "displayName": "My Evaluation",
  "description": "My Evaluation Description",
  "customProperties": {
    "testingKind": "Evaluation"
  }
}

Свойство верхнего уровня self в теле ответа представляет собой URI оценки. Используйте этот URI для получения сведений о проекте оценке и результатах теста. Этот URI также используется для обновления или удаления оценки.

Получение результатов теста

Получите результаты теста и оцените частоту ошибок слова (WER) по сравнению с результатами распознавания речи.

После завершения обучения выберите пользовательскую модель, чтобы открыть страницу сведений, а затем перейдите на вкладку "Проверки" , чтобы просмотреть оценки точности.

Чтобы получить результаты теста, выполните следующие действия:

  1. Войдите в службу Speech Studio.
  2. Выберите Пользовательская речь> имя вашего проекта >Тестовые модели.
  3. Выберите ссылку по названию теста.
  4. После завершения теста, как указано в состоянии "Успешно", отображаются результаты, которые включают номер WER для каждой тестовой модели.

На этой странице приведены все речевые фрагменты набора данных и показаны результаты распознавания вместе с расшифровкой из предоставленного набора данных. Вы можете переключаться между различными типами ошибок, включая вставку, удаление и замену. Прослушивая звук и сравнивая результаты распознавания в каждом столбце, вы можете решить, какая модель соответствует вашим потребностям и определить, где требуется больше обучения и улучшений.

Прежде чем продолжить, убедитесь, что у вас установлен и настроен Speech CLI.

Чтобы получить результаты теста, используйте команду spx csr evaluation status. Создайте параметры запроса в соответствии со следующими инструкциями:

  • Задайте для требуемого evaluation свойства идентификатор оценки, чтобы получить результаты теста.

Вот пример команды Speech CLI для получения результатов тестирования:

spx csr evaluation status --api-version v3.2 --evaluation aaaabbbb-6666-cccc-7777-dddd8888eeee

Внимание

Необходимо задать --api-version v3.2. Интерфейс командной строки службы "Речь" использует REST API, но пока не поддерживает версии позже v3.2.

Частота ошибок в словах и дополнительные сведения возвращаются в тексте ответа.

Текст ответа будет получен в следующем формате:

{
  "self": "https://YourResourceName.cognitiveservices.azure.com/speechtotext/v3.2/evaluations/eeeeffff-4444-aaaa-5555-bbbb6666cccc",
  "model1": {
    "self": "https://YourResourceName.cognitiveservices.azure.com/speechtotext/v3.2/models/base/ddddeeee-3333-ffff-4444-aaaa5555bbbb"
  },
  "model2": {
    "self": "https://YourResourceName.cognitiveservices.azure.com/speechtotext/v3.2/models/base/ddddeeee-3333-ffff-4444-aaaa5555bbbb"
  },
  "dataset": {
    "self": "https://YourResourceName.cognitiveservices.azure.com/speechtotext/v3.2/datasets/bbbbcccc-1111-dddd-2222-eeee3333ffff"
  },
  "transcription2": {
    "self": "https://YourResourceName.cognitiveservices.azure.com/speechtotext/v3.2/transcriptions/ffffaaaa-5555-bbbb-6666-cccc7777dddd"
  },
  "transcription1": {
    "self": "https://YourResourceName.cognitiveservices.azure.com/speechtotext/v3.2/transcriptions/ffffaaaa-5555-bbbb-6666-cccc7777dddd"
  },
  "project": {
    "self": "https://YourResourceName.cognitiveservices.azure.com/speechtotext/v3.2/projects/aaaabbbb-0000-cccc-1111-dddd2222eeee"
  },
  "links": {
    "files": "https://YourResourceName.cognitiveservices.azure.com/speechtotext/v3.2/evaluations/dda6e880-6ccd-49dc-b277-137565cbaa38/files"
  },
  "properties": {
    "wordErrorRate1": 0.028900000000000002,
    "sentenceErrorRate1": 0.667,
    "tokenErrorRate1": 0.12119999999999999,
    "sentenceCount1": 3,
    "wordCount1": 173,
    "correctWordCount1": 170,
    "wordSubstitutionCount1": 2,
    "wordDeletionCount1": 1,
    "wordInsertionCount1": 2,
    "tokenCount1": 165,
    "correctTokenCount1": 145,
    "tokenSubstitutionCount1": 10,
    "tokenDeletionCount1": 1,
    "tokenInsertionCount1": 9,
    "tokenErrors1": {
      "punctuation": {
        "numberOfEdits": 4,
        "percentageOfAllEdits": 20.0
      },
      "capitalization": {
        "numberOfEdits": 2,
        "percentageOfAllEdits": 10.0
      },
      "inverseTextNormalization": {
        "numberOfEdits": 1,
        "percentageOfAllEdits": 5.0
      },
      "lexical": {
        "numberOfEdits": 12,
        "percentageOfAllEdits": 12.0
      },
      "others": {
        "numberOfEdits": 1,
        "percentageOfAllEdits": 5.0
      }
    },
    "wordErrorRate2": 0.028900000000000002,
    "sentenceErrorRate2": 0.667,
    "tokenErrorRate2": 0.12119999999999999,
    "sentenceCount2": 3,
    "wordCount2": 173,
    "correctWordCount2": 170,
    "wordSubstitutionCount2": 2,
    "wordDeletionCount2": 1,
    "wordInsertionCount2": 2,
    "tokenCount2": 165,
    "correctTokenCount2": 145,
    "tokenSubstitutionCount2": 10,
    "tokenDeletionCount2": 1,
    "tokenInsertionCount2": 9,
    "tokenErrors2": {
      "punctuation": {
        "numberOfEdits": 4,
        "percentageOfAllEdits": 20.0
      },
      "capitalization": {
        "numberOfEdits": 2,
        "percentageOfAllEdits": 10.0
      },
      "inverseTextNormalization": {
        "numberOfEdits": 1,
        "percentageOfAllEdits": 5.0
      },
      "lexical": {
        "numberOfEdits": 12,
        "percentageOfAllEdits": 12.0
      },
      "others": {
        "numberOfEdits": 1,
        "percentageOfAllEdits": 5.0
      }
    }
  },
  "lastActionDateTime": "2024-07-14T21:31:22Z",
  "status": "Succeeded",
  "createdDateTime": "2024-07-14T21:31:14Z",
  "locale": "en-US",
  "displayName": "My Evaluation",
  "description": "My Evaluation Description",
  "customProperties": {
    "testingKind": "Evaluation"
  }
}

Для получения справки по работе с оценками в CLI службы "Речь" выполните следующую команду:

spx help csr evaluation

Чтобы получить результаты тестирования, начните с использования операции Evaluations_Get API REST Speech to text.

Выполните HTTP-запрос GET с URI, как показано в следующем примере. Замените YourEvaluationId на ваш идентификатор оценки, YourSpeechResoureKey на ваш ключ ресурса Speech, а YourResourceName на ваше имя ресурса Speech.

curl -v -X GET "https://YourResourceName.cognitiveservices.azure.com/speechtotext/v3.2/evaluations/YourEvaluationId" -H "Ocp-Apim-Subscription-Key: YourSpeechResoureKey"

Частота ошибок в словах и дополнительные сведения возвращаются в тексте ответа.

Текст ответа будет получен в следующем формате:

{
  "self": "https://YourResourceName.cognitiveservices.azure.com/speechtotext/v3.2/evaluations/eeeeffff-4444-aaaa-5555-bbbb6666cccc",
  "model1": {
    "self": "https://YourResourceName.cognitiveservices.azure.com/speechtotext/v3.2/models/base/ddddeeee-3333-ffff-4444-aaaa5555bbbb"
  },
  "model2": {
    "self": "https://YourResourceName.cognitiveservices.azure.com/speechtotext/v3.2/models/base/ddddeeee-3333-ffff-4444-aaaa5555bbbb"
  },
  "dataset": {
    "self": "https://YourResourceName.cognitiveservices.azure.com/speechtotext/v3.2/datasets/bbbbcccc-1111-dddd-2222-eeee3333ffff"
  },
  "transcription2": {
    "self": "https://YourResourceName.cognitiveservices.azure.com/speechtotext/v3.2/transcriptions/ffffaaaa-5555-bbbb-6666-cccc7777dddd"
  },
  "transcription1": {
    "self": "https://YourResourceName.cognitiveservices.azure.com/speechtotext/v3.2/transcriptions/ffffaaaa-5555-bbbb-6666-cccc7777dddd"
  },
  "project": {
    "self": "https://YourResourceName.cognitiveservices.azure.com/speechtotext/v3.2/projects/aaaabbbb-0000-cccc-1111-dddd2222eeee"
  },
  "links": {
    "files": "https://YourResourceName.cognitiveservices.azure.com/speechtotext/v3.2/evaluations/dda6e880-6ccd-49dc-b277-137565cbaa38/files"
  },
  "properties": {
    "wordErrorRate1": 0.028900000000000002,
    "sentenceErrorRate1": 0.667,
    "tokenErrorRate1": 0.12119999999999999,
    "sentenceCount1": 3,
    "wordCount1": 173,
    "correctWordCount1": 170,
    "wordSubstitutionCount1": 2,
    "wordDeletionCount1": 1,
    "wordInsertionCount1": 2,
    "tokenCount1": 165,
    "correctTokenCount1": 145,
    "tokenSubstitutionCount1": 10,
    "tokenDeletionCount1": 1,
    "tokenInsertionCount1": 9,
    "tokenErrors1": {
      "punctuation": {
        "numberOfEdits": 4,
        "percentageOfAllEdits": 20.0
      },
      "capitalization": {
        "numberOfEdits": 2,
        "percentageOfAllEdits": 10.0
      },
      "inverseTextNormalization": {
        "numberOfEdits": 1,
        "percentageOfAllEdits": 5.0
      },
      "lexical": {
        "numberOfEdits": 12,
        "percentageOfAllEdits": 12.0
      },
      "others": {
        "numberOfEdits": 1,
        "percentageOfAllEdits": 5.0
      }
    },
    "wordErrorRate2": 0.028900000000000002,
    "sentenceErrorRate2": 0.667,
    "tokenErrorRate2": 0.12119999999999999,
    "sentenceCount2": 3,
    "wordCount2": 173,
    "correctWordCount2": 170,
    "wordSubstitutionCount2": 2,
    "wordDeletionCount2": 1,
    "wordInsertionCount2": 2,
    "tokenCount2": 165,
    "correctTokenCount2": 145,
    "tokenSubstitutionCount2": 10,
    "tokenDeletionCount2": 1,
    "tokenInsertionCount2": 9,
    "tokenErrors2": {
      "punctuation": {
        "numberOfEdits": 4,
        "percentageOfAllEdits": 20.0
      },
      "capitalization": {
        "numberOfEdits": 2,
        "percentageOfAllEdits": 10.0
      },
      "inverseTextNormalization": {
        "numberOfEdits": 1,
        "percentageOfAllEdits": 5.0
      },
      "lexical": {
        "numberOfEdits": 12,
        "percentageOfAllEdits": 12.0
      },
      "others": {
        "numberOfEdits": 1,
        "percentageOfAllEdits": 5.0
      }
    }
  },
  "lastActionDateTime": "2024-07-14T21:31:22Z",
  "status": "Succeeded",
  "createdDateTime": "2024-07-14T21:31:14Z",
  "locale": "en-US",
  "displayName": "My Evaluation",
  "description": "My Evaluation Description",
  "customProperties": {
    "testingKind": "Evaluation"
  }
}

Оцените частоту ошибок в словах (WER)

Отраслевой стандарт для измерения точности модели — это частота ошибок в словах (WER). WER подсчитывает количество неправильных слов, выявленных во время распознавания, а затем делит сумму на общее число слов в размеченной человеком расшифровке (N).

Неправильно распознанные слова делятся на три категории:

  • Вставка (I): слова, неправильно добавленные в расшифровку гипотезы
  • Удаление (D): слова, не обнаруженные в расшифровке гипотезы
  • Замена (S): слова, заменённые между эталоном и гипотезой

На портале Microsoft Foundry и в Speech Studio частное умножается на 100 и отображается в процентах. В интерфейсе командной строки Speech и REST API результаты не умножаются на 100.

$$ WER = {{I+D+S} N}\over\times 100 $$

Ниже приведен пример, показывающий неправильно определенные слова по сравнению с расшифровкой, размеченной человеком:

Снимок экрана: пример неправильно идентифицируемых слов.

В распознавании речи были обнаружены следующие ошибки:

  • Вставка (I): добавлено слово «a»។
  • Удаление (D): Удалено слово "are"।
  • Замена (S): слово "John" заменено на "Jones"

Частота ошибок слов из предыдущего примера составляет 60 %.

Если вы хотите локально реплицировать измерения WER, можно использовать средство sclite из набора средств оценки NIST (SCTK).

Устранение ошибок и улучшение WER

Значение WER из результатов машинного распознавания можно использовать для оценки качества модели, используемой в приложении, средстве или продукте. WeR из 5-10% считается хорошим качеством и готов к использованию. Показатель WER на уровне 20 % приемлем, но, возможно, стоит рассмотреть дополнительное обучение. WER 30 % и более сообщает о низком качестве, требуя настройки и обучения.

Важно и распределение ошибок. Когда вы сталкиваетесь с большим количеством ошибок удаления, это обычно связано с низкой силой звукового сигнала. Чтобы устранить эту проблему, соберите звуковые данные ближе к источнику. Ошибки вставки означают, что звук был записан в шумной среде и присутствуют взаимные помехи, что приводит к проблемам распознавания. Ошибки подстановки часто возникают, когда предоставляется недостаточный объем терминов, специфичных для домена, в виде либо человечески размеченных транскрипций, либо связанного текста.

Анализируя отдельные файлы, можно определить тип ошибок и какие ошибки являются уникальными для определенного файла. Понимание проблем на уровне файла помогает улучшить цели.

Оценка частоты ошибок токенов (TER)

Помимо коэффициента ошибок на уровне слов, вы также можете использовать расширенную метрику частоты ошибок токенов (TER) для оценки качества в итоговом сквозном формате отображения. Помимо лексического представления (That will cost $900. вместо that will cost nine hundred dollars), TER учитывает также такие аспекты отображения, как пунктуация, использование заглавных букв и ITN. Дополнительные сведения см. в разделе «Отображение форматирования выходных данных с помощью преобразования речи в текст».

TER подсчитывает количество неправильных маркеров, определенных во время распознавания, и делит сумму на общее количество маркеров, предоставленных в транскрибировании с метками человека (N).

$$ TER = {{I+D+S}\over N} \times 100 $$

Формула вычисления TER также похожа на WER. Единственное различие заключается в том, что TER вычисляется на основе уровня токена вместо уровня слова.

  • Вставка (I): Маркеры, которые неправильно добавлены в расшифровку гипотезы
  • Удаление (D): Маркеры, которые не замечены в расшифровке гипотезы
  • Подстановка (S): маркеры, которые были заменены ссылкой и гипотезой

В реальном случае можно проанализировать результаты WER и TER, чтобы получить необходимые улучшения.

Примечание.

Чтобы измерить TER, убедитесь, что данные тестирования аудио и транскрибирования включают расшифровки с форматированием отображения, такими как препинание, прописная буква и ITN.

Примеры результатов сценария

Сценарии распознавания речи различаются по качеству звука и языку (словарю и стилю речи). В следующей таблице рассматриваются четыре распространенных сценария:

Сценарий Качество звука Словарь Стиль речи
Центр обработки вызовов Низкое, 8 кГц, на одном аудиоканале могут говорить два человека, звук может быть сжатым Узкий, уникальный для области и продуктов Разговорный, слабо структурированный
Голосовой помощник (например, Кортана или озвучка для окна автораздачи) Высокое, 16 кГц Насыщенный сущностями (названия песен, продуктов, мест) Четко звучащие слова и фразы
Диктовка (мгновенное сообщение, заметки, поиск) Высокое, 16 кГц Разнообразный Создание заметок
Скрытые субтитры для видео Разное, включая различное использование микрофона, добавление музыки Разное: встречи, декламация, тексты песен Прочитанный, подготовленный или нестрого структурированный

Различные сценарии дают разное качество. В следующей таблице показано, как контент для этих четырех сценариев оценивается с помощью WER. В таблице показано, какие типы ошибок чаще всего встречаются в каждом сценарии. Число ошибок вставки, удаления и замены помогает понять, данные какого типа следует добавить для улучшения модели.

Сценарий Качество распознавания речи Ошибки вставки Ошибки удаления Ошибки замены
Центр обработки вызовов Средняя
(< 30% WER)
Низкая, за исключением случаев, когда в фоновом режиме говорят другие люди Может быть высокой. Кол-центры могут быть шумными, а перекрывающаяся речь может сбить модель с толку Средняя. Продукты и имена людей могут приводить к таким ошибкам
Голосовой помощник Высокая
(может быть < 10% WER)
Низкий Низкий Средняя, из-за названий песен, продуктов или мест
Диктовка Высокая
(может быть < 10% WER)
Низкий Низкий Высокая
Скрытые субтитры для видео Зависит от типа видео (WER может быть < 50%) Низкий Может быть высокой из-за музыки, шума, качества микрофона Жаргон может приводить к таким ошибкам

Следующие шаги