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

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

Внимание

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

Создание проверки

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

Чтобы создать тест, сделайте следующее.

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

  2. Выберите пользовательские> модели тестирования имени >проекта.

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

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

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

    Примечание.

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

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

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

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

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

  • В качестве значения параметра project укажите идентификатор существующего проекта. Этот параметр рекомендуется, чтобы вы также могли просматривать тест в Speech Studio. Для получения доступных проектов выполните команду spx csr project list.
  • Задайте для обязательного параметра model1 значение идентификатора модели, которую нужно протестировать.
  • Задайте для обязательного параметра model2 значение идентификатора еще одной модели, которую нужно протестировать. Если вы не хотите сравнивать две модели, используйте одну модель для model1 и model2.
  • Задайте для обязательного параметра dataset значение идентификатора набора данных, который нужно использовать для тестирования.
  • language Задайте параметр, в противном случае интерфейс командной строки службы "en-US" по умолчанию. Этот параметр должен быть языковым стандартом содержимого набора данных. Языковой стандарт нельзя будет изменить позже. Параметр language интерфейса командной строки речевой службы соответствует свойству locale в запросе и ответе JSON.
  • Задайте обязательный параметр name. Этот параметр — это имя, отображаемое в Speech Studio. Параметр name интерфейса командной строки речевой службы соответствует свойству displayName в запросе и ответе JSON.

Ниже приведен пример команды CLI службы "Речь", которая создает тест:

spx csr evaluation create --api-version v3.1 --project 9f8c4cbb-f9a5-4ec1-8bb0-53cfa9221226 --dataset be378d9d-a9d7-4d4a-820a-e0432e8678c7 --model1 ff43e922-e3e6-4bf0-8473-55c08fd68048 --model2 1aae1070-7972-47e9-a977-87e3b05c457d --name "My Evaluation" --description "My Evaluation Description"

Вы должны получить ответ в следующем формате:

{
  "self": "https://eastus.api.cognitive.microsoft.com/speechtotext/v3.1/evaluations/8bfe6b05-f093-4ab4-be7d-180374b751ca",
  "model1": {
    "self": "https://eastus.api.cognitive.microsoft.com/speechtotext/v3.1/models/ff43e922-e3e6-4bf0-8473-55c08fd68048"
  },
  "model2": {
    "self": "https://eastus.api.cognitive.microsoft.com/speechtotext/v3.1/models/base/1aae1070-7972-47e9-a977-87e3b05c457d"
  },
  "dataset": {
    "self": "https://eastus.api.cognitive.microsoft.com/speechtotext/v3.1/datasets/be378d9d-a9d7-4d4a-820a-e0432e8678c7"
  },
  "transcription2": {
    "self": "https://eastus.api.cognitive.microsoft.com/speechtotext/v3.1/transcriptions/6eaf6a15-6076-466a-83d4-a30dba78ca63"
  },
  "transcription1": {
    "self": "https://eastus.api.cognitive.microsoft.com/speechtotext/v3.1/transcriptions/0c5b1630-fadf-444d-827f-d6da9c0cf0c3"
  },
  "project": {
    "self": "https://eastus.api.cognitive.microsoft.com/speechtotext/v3.1/projects/9f8c4cbb-f9a5-4ec1-8bb0-53cfa9221226"
  },
  "links": {
    "files": "https://eastus.api.cognitive.microsoft.com/speechtotext/v3.1/evaluations/8bfe6b05-f093-4ab4-be7d-180374b751ca/files"
  },
  "properties": {
    "wordErrorRate2": -1.0,
    "wordErrorRate1": -1.0,
    "sentenceErrorRate2": -1.0,
    "sentenceCount2": -1,
    "wordCount2": -1,
    "correctWordCount2": -1,
    "wordSubstitutionCount2": -1,
    "wordDeletionCount2": -1,
    "wordInsertionCount2": -1,
    "sentenceErrorRate1": -1.0,
    "sentenceCount1": -1,
    "wordCount1": -1,
    "correctWordCount1": -1,
    "wordSubstitutionCount1": -1,
    "wordDeletionCount1": -1,
    "wordInsertionCount1": -1
  },
  "lastActionDateTime": "2022-05-20T16:42:43Z",
  "status": "NotStarted",
  "createdDateTime": "2022-05-20T16:42:43Z",
  "locale": "en-US",
  "displayName": "My Evaluation",
  "description": "My Evaluation Description"
}

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

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

spx help csr evaluation

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

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

Выполните HTTP-запрос POST, используя URI, как показано в следующем примере. Замените YourSubscriptionKey ключом ресурса службы "Речь" и YourServiceRegion регионом ресурса службы "Речь", а также задайте свойства текста запроса, как описано выше.

curl -v -X POST -H "Ocp-Apim-Subscription-Key: YourSubscriptionKey" -H "Content-Type: application/json" -d '{
  "model1": {
    "self": "https://eastus.api.cognitive.microsoft.com/speechtotext/v3.1/models/ff43e922-e3e6-4bf0-8473-55c08fd68048"
  },
  "model2": {
    "self": "https://eastus.api.cognitive.microsoft.com/speechtotext/v3.1/models/base/1aae1070-7972-47e9-a977-87e3b05c457d"
  },
  "dataset": {
    "self": "https://eastus.api.cognitive.microsoft.com/speechtotext/v3.1/datasets/be378d9d-a9d7-4d4a-820a-e0432e8678c7"
  },
  "project": {
    "self": "https://eastus.api.cognitive.microsoft.com/speechtotext/v3.1/projects/9f8c4cbb-f9a5-4ec1-8bb0-53cfa9221226"
  },
  "displayName": "My Evaluation",
  "description": "My Evaluation Description",
  "customProperties": {
    "testingKind": "Evaluation"
  },
  "locale": "en-US"
}'  "https://YourServiceRegion.api.cognitive.microsoft.com/speechtotext/v3.1/evaluations"

Вы должны получить ответ в следующем формате:

{
  "self": "https://eastus.api.cognitive.microsoft.com/speechtotext/v3.1/evaluations/8bfe6b05-f093-4ab4-be7d-180374b751ca",
  "model1": {
    "self": "https://eastus.api.cognitive.microsoft.com/speechtotext/v3.1/models/ff43e922-e3e6-4bf0-8473-55c08fd68048"
  },
  "model2": {
    "self": "https://eastus.api.cognitive.microsoft.com/speechtotext/v3.1/models/base/1aae1070-7972-47e9-a977-87e3b05c457d"
  },
  "dataset": {
    "self": "https://eastus.api.cognitive.microsoft.com/speechtotext/v3.1/datasets/be378d9d-a9d7-4d4a-820a-e0432e8678c7"
  },
  "transcription2": {
    "self": "https://eastus.api.cognitive.microsoft.com/speechtotext/v3.1/transcriptions/6eaf6a15-6076-466a-83d4-a30dba78ca63"
  },
  "transcription1": {
    "self": "https://eastus.api.cognitive.microsoft.com/speechtotext/v3.1/transcriptions/0c5b1630-fadf-444d-827f-d6da9c0cf0c3"
  },
  "project": {
    "self": "https://eastus.api.cognitive.microsoft.com/speechtotext/v3.1/projects/9f8c4cbb-f9a5-4ec1-8bb0-53cfa9221226"
  },
  "links": {
    "files": "https://eastus.api.cognitive.microsoft.com/speechtotext/v3.1/evaluations/8bfe6b05-f093-4ab4-be7d-180374b751ca/files"
  },
  "properties": {
    "wordErrorRate2": -1.0,
    "wordErrorRate1": -1.0,
    "sentenceErrorRate2": -1.0,
    "sentenceCount2": -1,
    "wordCount2": -1,
    "correctWordCount2": -1,
    "wordSubstitutionCount2": -1,
    "wordDeletionCount2": -1,
    "wordInsertionCount2": -1,
    "sentenceErrorRate1": -1.0,
    "sentenceCount1": -1,
    "wordCount1": -1,
    "correctWordCount1": -1,
    "wordSubstitutionCount1": -1,
    "wordDeletionCount1": -1,
    "wordInsertionCount1": -1
  },
  "lastActionDateTime": "2022-05-20T16:42:43Z",
  "status": "NotStarted",
  "createdDateTime": "2022-05-20T16:42:43Z",
  "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 для каждой тестируемой модели.

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

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

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

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

spx csr evaluation status --api-version v3.1 --evaluation 8bfe6b05-f093-4ab4-be7d-180374b751ca

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

Вы должны получить ответ в следующем формате:

{
	"self": "https://eastus.api.cognitive.microsoft.com/speechtotext/v3.1/evaluations/8bfe6b05-f093-4ab4-be7d-180374b751ca",
	"model1": {
		"self": "https://eastus.api.cognitive.microsoft.com/speechtotext/v3.1/models/ff43e922-e3e6-4bf0-8473-55c08fd68048"
	},
	"model2": {
		"self": "https://eastus.api.cognitive.microsoft.com/speechtotext/v3.1/models/base/1aae1070-7972-47e9-a977-87e3b05c457d"
	},
	"dataset": {
		"self": "https://eastus.api.cognitive.microsoft.com/speechtotext/v3.1/datasets/be378d9d-a9d7-4d4a-820a-e0432e8678c7"
	},
	"transcription2": {
		"self": "https://eastus.api.cognitive.microsoft.com/speechtotext/v3.1/transcriptions/6eaf6a15-6076-466a-83d4-a30dba78ca63"
	},
	"transcription1": {
		"self": "https://eastus.api.cognitive.microsoft.com/speechtotext/v3.1/transcriptions/0c5b1630-fadf-444d-827f-d6da9c0cf0c3"
	},
	"project": {
		"self": "https://eastus.api.cognitive.microsoft.com/speechtotext/v3.1/projects/9f8c4cbb-f9a5-4ec1-8bb0-53cfa9221226"
	},
	"links": {
		"files": "https://eastus.api.cognitive.microsoft.com/speechtotext/v3.1/evaluations/8bfe6b05-f093-4ab4-be7d-180374b751ca/files"
	},
	"properties": {
		"wordErrorRate2": 4.62,
		"wordErrorRate1": 4.6,
		"sentenceErrorRate2": 66.7,
		"sentenceCount2": 3,
		"wordCount2": 173,
		"correctWordCount2": 166,
		"wordSubstitutionCount2": 7,
		"wordDeletionCount2": 0,
		"wordInsertionCount2": 1,
		"sentenceErrorRate1": 66.7,
		"sentenceCount1": 3,
		"wordCount1": 174,
		"correctWordCount1": 166,
		"wordSubstitutionCount1": 7,
		"wordDeletionCount1": 1,
		"wordInsertionCount1": 0
	},
	"lastActionDateTime": "2022-05-20T16:42:56Z",
	"status": "Succeeded",
	"createdDateTime": "2022-05-20T16:42:43Z",
	"locale": "en-US",
	"displayName": "My Evaluation",
	"description": "My Evaluation Description",
	"customProperties": {
		"testingKind": "Evaluation"
	}
}

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

spx help csr evaluation

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

Выполните HTTP-запрос GET с URI, как показано в следующем примере. Замените YourEvaluationId на ИД оценки, YourSubscriptionKey — на ключ ресурса службы "Речь", а YourServiceRegion — на регион ресурса службы "Речь".

curl -v -X GET "https://YourServiceRegion.api.cognitive.microsoft.com/speechtotext/v3.1/evaluations/YourEvaluationId" -H "Ocp-Apim-Subscription-Key: YourSubscriptionKey"

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

Вы должны получить ответ в следующем формате:

{
	"self": "https://eastus.api.cognitive.microsoft.com/speechtotext/v3.1/evaluations/8bfe6b05-f093-4ab4-be7d-180374b751ca",
	"model1": {
		"self": "https://eastus.api.cognitive.microsoft.com/speechtotext/v3.1/models/ff43e922-e3e6-4bf0-8473-55c08fd68048"
	},
	"model2": {
		"self": "https://eastus.api.cognitive.microsoft.com/speechtotext/v3.1/models/base/1aae1070-7972-47e9-a977-87e3b05c457d"
	},
	"dataset": {
		"self": "https://eastus.api.cognitive.microsoft.com/speechtotext/v3.1/datasets/be378d9d-a9d7-4d4a-820a-e0432e8678c7"
	},
	"transcription2": {
		"self": "https://eastus.api.cognitive.microsoft.com/speechtotext/v3.1/transcriptions/6eaf6a15-6076-466a-83d4-a30dba78ca63"
	},
	"transcription1": {
		"self": "https://eastus.api.cognitive.microsoft.com/speechtotext/v3.1/transcriptions/0c5b1630-fadf-444d-827f-d6da9c0cf0c3"
	},
	"project": {
		"self": "https://eastus.api.cognitive.microsoft.com/speechtotext/v3.1/projects/9f8c4cbb-f9a5-4ec1-8bb0-53cfa9221226"
	},
	"links": {
		"files": "https://eastus.api.cognitive.microsoft.com/speechtotext/v3.1/evaluations/8bfe6b05-f093-4ab4-be7d-180374b751ca/files"
	},
	"properties": {
		"wordErrorRate2": 4.62,
		"wordErrorRate1": 4.6,
		"sentenceErrorRate2": 66.7,
		"sentenceCount2": 3,
		"wordCount2": 173,
		"correctWordCount2": 166,
		"wordSubstitutionCount2": 7,
		"wordDeletionCount2": 0,
		"wordInsertionCount2": 1,
		"sentenceErrorRate1": 66.7,
		"sentenceCount1": 3,
		"wordCount1": 174,
		"correctWordCount1": 166,
		"wordSubstitutionCount1": 7,
		"wordDeletionCount1": 1,
		"wordInsertionCount1": 0
	},
	"lastActionDateTime": "2022-05-20T16:42:56Z",
	"status": "Succeeded",
	"createdDateTime": "2022-05-20T16:42:43Z",
	"locale": "en-US",
	"displayName": "My Evaluation",
	"description": "My Evaluation Description",
	"customProperties": {
		"testingKind": "Evaluation"
	}
}

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

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

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

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

В Speech Studio коэффициент умножается на 100 и отображается в процентах. В CLI службы "Речь" и REST API результаты не умножаются на 100.

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

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

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

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

  • I (вставка): добавлено слово "a".
  • D (удаление): удалено слово "are".
  • S (замена): слово "Jones" заменено на "John".

Частота ошибок слов из предыдущего примера составляет 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} N}\over\times 100 $$

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

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

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

Примечание.

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

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

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

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

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

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

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