Поделиться через


Добавление профессионального набора данных для обучения голосовой связи

Когда вы будете готовы создать пользовательский текст для голосовой речи для приложения, сначала необходимо собрать аудиозаписи и связанные скрипты, чтобы начать обучение модели голосовой связи. Дополнительные сведения о записи образцов голоса см. в этом руководстве. Служба речи использует эти данные для создания уникального голоса, настроенного для сопоставления голоса в записях. После обучения голосовой модели вы можете использовать ее для синтезирования речи в приложениях.

Все отправляемые данные должны соответствовать требованиям к выбранному типу данных. Перед отправкой важно правильно отформатировать данные, чтобы обеспечить их точную обработку в службе "Речь". Чтобы убедиться, что данные правильно отформатированы, см. статью "Типы данных обучения".

Примечание.

  • Пользователи со стандартной подпиской (S0) могут одновременно отправлять пять файлов данных. Если достигнуто предельное количество отправляемых файлов, подождите, пока завершится импорт хотя бы одного из них. Затем повторите попытку.
  • В рамках одной стандартной подписки (S0) можно импортировать не более 500 ZIP-файлов с данными. Дополнительные сведения см. в статье Квоты и ограничения службы "Речь".

Отправка данных

Когда вы будете готовы отправить данные, откройте вкладку Prepare training data (Подготовка обучающих данных), чтобы добавить первый обучающий набор и передать данные. Обучающий набор — это набор речевых фрагментов и их сценариев сопоставления, используемых для обучения голосовой модели. Обучающий набор можно использовать для организации обучающих данных. Служба проверяет готовность данных каждого обучающего набора. В обучающий набор можно импортировать несколько наборов данных.

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

  1. Войдите в службу Speech Studio.
  2. Выберите "Настраиваемый голос>", имя >проекта "Подготовка обучающих данных>".
  3. В мастере отправки данных выберите тип данных и нажмите кнопку "Далее".
  4. Выберите локальные файлы на компьютере или введите URL-адрес хранилища BLOB-объектов Azure для отправки данных.
  5. В разделе "Укажите целевой набор обучения", выберите существующий набор обучения или создайте новый. Если вы создали новый набор обучения, убедитесь, что он выбран в раскрывающемся списке перед продолжением.
  6. Выберите Далее.
  7. Введите имя и описание данных, а затем нажмите кнопку "Далее".
  8. Просмотрите сведения о отправке и нажмите кнопку "Отправить".

Примечание.

Повторяющиеся идентификаторы не принимаются. Речевые фрагменты с тем же идентификатором будут удалены.

Дубликаты аудиофайлов не будут использоваться в обучении. Убедитесь, что в выбранных вами данных нет звуковых фрагментов с одинаковыми названиями в одном или нескольких ZIP-файлах. Если идентификаторы речевых фрагментов (в аудиофайлах или файлах сценариев) дублируются, они будут отклонены.

Файлы данных проверяются автоматически при нажатии кнопки Submit (Отправить). Проверка данных включает ряд проверок звуковых файлов, включая проверку формата, размера и частоты выборки. Если возникнут ошибки, исправьте их и повторите отправку.

После отправки данных сведения можно проверить в подробном представлении обучающего набора. На странице сведений можно дополнительно проверить проблему произношения и уровень шума для каждого из данных. Оценка произношения на уровне предложения составляет от 0 до 100. Оценка ниже 70 обычно означает ошибку в речи или несоответствие в сценарии. Речевые фрагменты с общей оценкой ниже 70 будут отклонены. Заметный акцент уменьшает оценку произношения и влияет на созданный цифровой голос.

Устранение проблем с данными в Сети

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

Вы можете определить и устранить проблемы с данными в речевых фрагментах в Speech Studio.

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

    Снимок экрана: кнопка

    Вы можете выбрать, какие проблемы с данными должны отображаться в зависимости от условий.

    Снимок экрана: выбор отображаемых проблем с данными.

  2. Откроется окно правки.

    Снимок экрана: отображение окна для редактирования файла записи и транскрипции.

  3. Обновите файл расшифровки или записи в соответствии с описанием проблемы в окне редактирования.

    Вы можете изменить расшифровку в текстовом поле, а затем нажмите кнопку "Готово"

    Снимок экрана: выбор кнопки

    Если нужно обновить файл записи, выберите элемент Обновление файла записи, а затем отправьте исправленный файл записи (WAV).

    Снимок экрана: отправка файла записи в окне для редактирования файла записи и транскрипции.

  4. После внесения изменений в данные необходимо проверить качество данных, нажав кнопку "Анализ данных", прежде чем использовать этот набор данных для обучения.

    Нельзя выбирать этот обучающий набор для модели обучения до завершения анализа.

    Снимок экрана: выбор действия

    Кроме того, вы можете удалять речевые фрагменты с проблемами. Для этого выберите их и нажмите кнопку Удалить.

Типичные проблемы с данными

Проблемы делятся на три типа. Чтобы определить тип ошибки, обратитесь к приведенным ниже таблицам.

Автоматическое отклонение

Данные с такими ошибками не будут использоваться для обучения. Импортированные данные с ошибками будут игнорироваться, поэтому удалять их не нужно. Эти ошибки данных можно исправить в Интернете или снова отправить исправленные данные для обучения.

Категория Имя Описание
Скрипт Недопустимый разделитель Идентификаторы речевых фрагментов и содержимое сценариев следует разделять знаками табуляции.
Скрипт Недопустимый идентификатор сценария. Идентификатор строки сценария должен быть числом.
Скрипт Дублирующийся скрипт Каждая строка содержимого скрипта должна быть уникальной. Для дублирования строк используются символы {}.
Скрипт Слишком длинный скрипт Длина скрипта должна быть менее 1000 символов.
Скрипт Нет соответствующего звукового фрагмента Идентификатор каждого речевого фрагмента (каждой строки в файле скрипта) должен соответствовать идентификатору звукового фрагмента.
Скрипт Нет допустимого сценария В этом наборе данных не найден допустимый сценарий. Исправьте строки скрипта, указанные в списке проблем.
Аудио Нет соответствующего скрипта Нет звуковых файлов, соответствующих идентификатору скрипта. Имена WAV-файлов должны соответствовать идентификаторам в файле сценария.
Аудио Недопустимый формат звука Недопустимый звуковой формат WAV-файлов. Проверьте формат WAV-файлов средством для работы со звуковыми данными, например SoX.
Аудио Низкая частота дискретизации Частота дискретизации WAV-файлов должна быть не ниже 16 кГц.
Аудио Слишком длинный звуковой фрагмент Длительность звука превышает 30 секунд. Разделите длинный звуковой фрагмент на несколько файлов. Рекомендуется делать речевые фрагменты длительностью до 15 секунд.
Аудио Нет допустимого звука В этом наборе данных нет допустимых звуковых фрагментов. Проверьте звуковые данные и отправьте их еще раз.
Несоответствие Речевой фрагмент с низкой оценкой Оценка произношения на уровне предложений ниже 70. Проверьте скрипт и содержимое звуковых файлов и убедитесь, что они соответствуют друг другу.

Автоматическое исправление

Следующие ошибки исправляются автоматически, но вам следует проверять эти исправления и убеждаться, что они выполнены верно.

Категория Имя Описание
Несоответствие Автоматически исправлен фрагмент записи без звука Обнаружено, что в начале записи имеется фрагмент без звука продолжительностью менее 100 мс. Система автоматически увеличила его длительность до 100 мс. Скачайте нормализованный набор данных и проверьте его.
Несоответствие Автоматически исправлен фрагмент записи без звука Обнаружено, что в конце записи имеется фрагмент без звука продолжительностью менее 100 мс. Система автоматически увеличила его длительность до 100 мс. Скачайте нормализованный набор данных и проверьте его.
Скрипт Автоматическое нормализация текста Текст автоматически нормализуется для цифр, символов и аббревиаций. Просмотрите скрипт и звук, чтобы убедиться, что они соответствуют.

Требуется проверка вручную

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

Категория Имя Описание
Скрипт Ненормализованный текст В этом сценарии имеются символы. Нормализуйте эти символы, чтобы они соответствовали аудиозаписи. Например, нормализуется / косой чертой.
Скрипт Недостаточное количество вопросительных речевых фрагментов Не менее 10 % всех речевых фрагментов должны представлять собой вопросительные предложения. С их помощью голосовая модель учится правильно произносить вопросительные интонации.
Скрипт Недостаточно восклицательных речевых фрагментов Не менее 10 % всех речевых фрагментов должны представлять собой восклицательные предложения. С их помощью голосовая модель учится правильно произносить восклицательные интонации.
Скрипт Недопустимая конечная пунктуация Добавьте один из следующих символов в конце строки: точка (полуширинный '.' или полноширинный '。'), восклицательный знак (полуширинный '!' или полноширинный '!') или знак вопроса ( половинная ширина '?' или полная ширина '?').
Аудио Низкая частота дискретизации нейронного голоса При создании нейронных голосов рекомендуется использовать WAV-файлы с частотой дискретизации 24 кГц или больше. Если она ниже, то будет автоматически повышена до 24 кГц.
Громкость Общая громкость слишком низкая Уровень громкости не должен быть ниже 18 дБ (10 % от максимального уровня громкости). Во время записи образцов или подготовки данных следите за тем, чтобы средний уровень находился в пределах допустимого диапазона.
Громкость Превышение допустимого уровня громкости Обнаружено превышение допустимого уровня громкости в позиции {} с. Настройте записывающее оборудование таким образом, чтобы пиковый уровень громкости не превышал допустимый уровень громкости.
Громкость Проблема с фрагментом без звука в начале записи В фрагменте длительностью 100 мс в начале записи присутствуют звуки. Уменьшите пороговый уровень шума при записи. Начальный фрагмент длительностью 100 мс должен быть без звуков.
Громкость Проблема с фрагментом без звука в конце записи В фрагменте длительностью 100 мс в конце записи присутствуют звуки. Уменьшите пороговый уровень шума при записи. Конечный фрагмент длительностью 100 мс должен быть без звуков.
Несоответствие Слова с низкой оценкой Проверьте сценарий и содержимое звуковых файлов. Убедитесь, что они соответствуют друг другу, и снизьте пороговый уровень шума. Уменьшите продолжительность длинного участка без звуков. Если звуковой файл слишком длинный, разделите его на несколько речевых фрагментов.
Несоответствие Проблема с фрагментом без звука в начале записи Перед первым словом обнаружен посторонний звук. Проверьте скрипт и содержимое звуковых файлов; убедитесь, что они соответствуют друг другу, уменьшите пороговый уровень шума и создайте в начале записи фрагмент продолжительностью 100 мс без звуков.
Несоответствие Проблема с фрагментом без звука в конце записи После последнего слова обнаружен посторонний звук. Проверьте скрипт и содержимое звуковых файлов; убедитесь, что они соответствуют друг другу, уменьшите пороговый уровень шума и создайте в конце записи фрагмент продолжительностью 100 мс без звуков.
Несоответствие Плохое отношение "сигнал/шум" Отношение "сигнал/шум" меньше 20 дБ. Рекомендуется значение не менее 35 дБ.
Несоответствие Оценка недоступна Не удалось распознать речевое содержимое в этом звуковом фрагменте. Проверьте содержимое звукового фрагмента и скрипта; убедитесь, что звуковой фрагмент допустимый и соответствует скрипту.

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

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

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

Создание обучаемого набора

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

  • Задайте обязательное свойство projectId. См. статью о создании проекта.
  • Задайте для требуемого voiceKind свойства Male значение или Female. Тип нельзя изменить позже.
  • Задайте обязательное свойство locale. Это должен быть языковой стандарт данных набора обучения. Языковой стандарт обучающего набора должен совпадать с языковым стандартом оператора согласия. Языковой стандарт нельзя будет изменить позже. Здесь можно найти текст для языкового стандарта речи.
  • При необходимости задайте description свойство для описания набора обучения. Описание набора обучения можно изменить позже.

Выполните HTTP-запрос PUT с помощью URI, как показано в следующем TrainingSets_Create примере.

  • Замените YourResourceKey ключом ресурса службы речи.
  • Замените YourResourceRegion регион ресурсов службы "Речь".
  • Замените JessicaTrainingSetId выбранным идентификатором набора обучения. Конфиденциальный идентификатор регистра будет использоваться в URI набора обучения и не может быть изменен позже.
curl -v -X PUT -H "Ocp-Apim-Subscription-Key: YourResourceKey" -H "Content-Type: application/json" -d '{
  "description": "300 sentences Jessica data in general style.",
  "projectId": "ProjectId",
  "locale": "en-US",
  "voiceKind": "Female"
} '  "https://YourResourceRegion.api.cognitive.microsoft.com/customvoice/trainingsets/JessicaTrainingSetId?api-version=2024-02-01-preview"

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

{
  "id": "JessicaTrainingSetId",
  "description": "300 sentences Jessica data in general style.",
  "projectId": "ProjectId",
  "locale": "en-US",
  "voiceKind": "Female",
  "status": "Succeeded",
  "createdDateTime": "2023-04-01T05:30:00.000Z",
  "lastActionDateTime": "2023-04-02T10:15:30.000Z"
}

Отправка данных набора обучения

Чтобы отправить обучающий набор звуковых и скриптов, используйте TrainingSets_UploadData операцию пользовательского API голосовой связи.

Перед вызовом этого API сохраните файлы записей и скриптов в BLOB-объекте Azure. В приведенном ниже примере файлы записи — https://contoso.blob.core.windows.net/voicecontainer/jessica300/*.wav, файлы скриптов — https://contoso.blob.core.windows.net/voicecontainer/jessica300/*.txt.

Создайте текст запроса в соответствии со следующими инструкциями:

  • Задайте для требуемого kind свойства AudioAndScriptзначение . Тип определяет тип обучающего набора.
  • Задайте обязательное свойство audios. В свойстве audios задайте следующие свойства:
    • Задайте для требуемого containerUrl свойства URL-адрес контейнера Хранилище BLOB-объектов Azure, содержащего звуковые файлы. Используйте подписанные URL-адреса (SAS) для контейнера с разрешениями на чтение и список.
    • Задайте требуемое extensions свойство расширениям звуковых файлов.
    • При необходимости задайте prefix для свойства префикс для имени большого двоичного объекта.
  • Задайте обязательное свойство scripts. В свойстве scripts задайте следующие свойства:
    • Задайте для требуемого containerUrl свойства URL-адрес контейнера Хранилище BLOB-объектов Azure, содержащего файлы скриптов. Используйте подписанные URL-адреса (SAS) для контейнера с разрешениями на чтение и список.
    • Задайте требуемое extensions свойство расширениям файлов скриптов.
    • При необходимости задайте prefix для свойства префикс для имени большого двоичного объекта.

Выполните HTTP-запрос POST с помощью URI, как показано в следующем TrainingSets_UploadData примере.

  • Замените YourResourceKey ключом ресурса службы речи.
  • Замените YourResourceRegion регион ресурсов службы "Речь".
  • Замените JessicaTrainingSetId , если вы указали другой идентификатор набора обучения на предыдущем шаге.
curl -v -X POST -H "Ocp-Apim-Subscription-Key: YourResourceKey" -H "Content-Type: application/json" -d '{
  "kind": "AudioAndScript",
  "audios": {
    "containerUrl": "https://contoso.blob.core.windows.net/voicecontainer?mySasToken",
    "prefix": "jessica300/",
    "extensions": [
      ".wav"
    ]
  },
  "scripts": {
    "containerUrl": "https://contoso.blob.core.windows.net/voicecontainer?mySasToken",
    "prefix": "jessica300/",
    "extensions": [
      ".txt"
    ]
  }
} '  "https://YourResourceRegion.api.cognitive.microsoft.com/customvoice/trainingsets/JessicaTrainingSetId:upload?api-version=2024-02-01-preview"

Заголовок ответа содержит Operation-Location свойство. Используйте этот URI для получения сведений об операции TrainingSets_UploadData . Ниже приведен пример заголовка ответа:

Operation-Location: https://eastus.api.cognitive.microsoft.com/customvoice/operations/284b7e37-f42d-4054-8fa9-08523c3de345?api-version=2024-02-01-preview
Operation-Id: 284b7e37-f42d-4054-8fa9-08523c3de345

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