Использование оценки произношения
В этой статье вы узнаете, как оценить произношение с речью в тексте с помощью пакета SDK службы "Речь". Оценка произношения представляет собой оценку речи и предоставляет говорящим отзывы о точности и владении языком лица, чья речь записана в формате аудио.
Примечание.
Оценка произношения использует определенную версию модели распознавания речи и текста, отличающейся от стандартной речи к текстовой модели, чтобы обеспечить согласованную и точную оценку произношения.
Использование оценки произношения в режиме потоковой передачи
Оценка произношения поддерживает непрерывный режим потоковой передачи. Время записи может быть неограниченно через пакет SDK службы "Речь". Пока вы не останавливаете запись, процесс оценки не завершается, и вы можете приостановить и возобновить оценку удобно.
Сведения о доступности оценки произношения см. на страницах со списками поддерживаемых языков и доступных регионов.
В качестве базового плана использование оценки произношения стоит так же, как речь в тексте для оплаты по мере использования или цен на категории обязательств. Если вы приобрели уровень обязательств для преобразования речи в текст, расходы на оценку произношения идет к достижению приверженности. Дополнительные сведения см. на странице цен.
Сведения об использовании оценки произношения в режиме потоковой передачи в собственном приложении см . в примере кода.
Сведения об использовании оценки произношения в режиме потоковой передачи в собственном приложении см . в примере кода.
Сведения об использовании оценки произношения в режиме потоковой передачи в собственном приложении см . в примере кода.
Сведения об использовании оценки произношения в режиме потоковой передачи в собственном приложении см . в примере кода.
Сведения об использовании оценки произношения в режиме потоковой передачи в собственном приложении см . в примере кода.
Сведения об использовании оценки произношения в режиме потоковой передачи в собственном приложении см . в примере кода.
Сведения об использовании оценки произношения в режиме потоковой передачи в собственном приложении см . в примере кода.
Непрерывное распознавание
Если звуковой файл превышает 30 секунд, используйте непрерывный режим обработки. Пример кода для непрерывного режима можно найти на GitHub в функции PronunciationAssessmentContinuousWithFile
.
Если звуковой файл превышает 30 секунд, используйте непрерывный режим обработки.
Если звуковой файл превышает 30 секунд, используйте непрерывный режим обработки. Пример кода для непрерывного режима можно найти на GitHub в функции pronunciationAssessmentContinuousWithFile
.
Если звуковой файл превышает 30 секунд, используйте непрерывный режим обработки. Пример кода для непрерывного режима можно найти на GitHub в функции pronunciation_assessment_continuous_from_file
.
Если звуковой файл превышает 30 секунд, используйте непрерывный режим обработки. Пример кода для непрерывного режима можно найти на сайте GitHub.
Если звуковой файл превышает 30 секунд, используйте непрерывный режим обработки. Пример кода для непрерывного режима можно найти на GitHub в функции pronunciationAssessFromFile
.
Если звуковой файл превышает 30 секунд, используйте непрерывный режим обработки. Пример кода для непрерывного режима можно найти на GitHub в функции continuousPronunciationAssessment
.
Настройка параметров конфигурации
Примечание.
Оценка произношения недоступна в пакете SDK службы "Речь" для Go. Вы можете ознакомиться с основными понятиями в этом руководстве. Выберите другой язык программирования для решения.
В этом SpeechRecognizer
разделе можно указать язык для изучения или практики улучшения произношения. Языковой стандарт по умолчанию .en-US
Чтобы узнать, как указать язык обучения для оценки произношения в собственном приложении, можно использовать следующий пример кода.
var recognizer = new SpeechRecognizer(speechConfig, "en-US", audioConfig);
auto recognizer = SpeechRecognizer::FromConfig(speechConfig, "en-US", audioConfig);
SpeechRecognizer recognizer = new SpeechRecognizer(speechConfig, "en-US", audioConfig);
speech_recognizer = speechsdk.SpeechRecognizer(speech_config=speech_config, language="en-US", audio_config=audio_config)
speechConfig.speechRecognitionLanguage = "en-US";
SPXSpeechRecognizer* recognizer = [[SPXSpeechRecognizer alloc] initWithSpeechConfiguration:speechConfig language:@"en-US" audioConfiguration:audioConfig];
let recognizer = try! SPXSpeechRecognizer(speechConfiguration: speechConfig, language: "en-US", audioConfiguration: audioConfig)
Совет
Если вы не уверены, какой языковой стандарт следует задать для языка с несколькими языковыми стандартами, попробуйте использовать каждый языковой стандарт отдельно. Например, для испанского языка попробуйте es-ES
и es-MX
. Определите, какие оценки языкового стандарта выше для вашего сценария.
Необходимо создать PronunciationAssessmentConfig
объект. Вы можете задать EnableProsodyAssessment
и EnableContentAssessmentWithTopic
включить оценку prosody и содержимого. Дополнительные сведения см. в разделе "Методы конфигурации".
var pronunciationAssessmentConfig = new PronunciationAssessmentConfig(
referenceText: "",
gradingSystem: GradingSystem.HundredMark,
granularity: Granularity.Phoneme,
enableMiscue: false);
pronunciationAssessmentConfig.EnableProsodyAssessment();
pronunciationAssessmentConfig.EnableContentAssessmentWithTopic("greeting");
auto pronunciationConfig = PronunciationAssessmentConfig::Create("", PronunciationAssessmentGradingSystem::HundredMark, PronunciationAssessmentGranularity::Phoneme, false);
pronunciationConfig->EnableProsodyAssessment();
pronunciationConfig->EnableContentAssessmentWithTopic("greeting");
PronunciationAssessmentConfig pronunciationConfig = new PronunciationAssessmentConfig("",
PronunciationAssessmentGradingSystem.HundredMark, PronunciationAssessmentGranularity.Phoneme, false);
pronunciationConfig.enableProsodyAssessment();
pronunciationConfig.enableContentAssessmentWithTopic("greeting");
pronunciation_config = speechsdk.PronunciationAssessmentConfig(
reference_text="",
grading_system=speechsdk.PronunciationAssessmentGradingSystem.HundredMark,
granularity=speechsdk.PronunciationAssessmentGranularity.Phoneme,
enable_miscue=False)
pronunciation_config.enable_prosody_assessment()
pronunciation_config.enable_content_assessment_with_topic("greeting")
var pronunciationAssessmentConfig = new sdk.PronunciationAssessmentConfig(
referenceText: "",
gradingSystem: sdk.PronunciationAssessmentGradingSystem.HundredMark,
granularity: sdk.PronunciationAssessmentGranularity.Phoneme,
enableMiscue: false);
pronunciationAssessmentConfig.enableProsodyAssessment();
pronunciationAssessmentConfig.enableContentAssessmentWithTopic("greeting");
SPXPronunciationAssessmentConfiguration *pronunicationConfig =
[[SPXPronunciationAssessmentConfiguration alloc] init:@"" gradingSystem:SPXPronunciationAssessmentGradingSystem_HundredMark granularity:SPXPronunciationAssessmentGranularity_Phoneme enableMiscue:false];
[pronunicationConfig enableProsodyAssessment];
[pronunicationConfig enableContentAssessmentWithTopic:@"greeting"];
let pronAssessmentConfig = try! SPXPronunciationAssessmentConfiguration("",
gradingSystem: .hundredMark,
granularity: .phoneme,
enableMiscue: false)
pronAssessmentConfig.enableProsodyAssessment()
pronAssessmentConfig.enableContentAssessment(withTopic: "greeting")
Данная таблица содержит несколько основных параметров конфигурации для оценки произношения.
Параметр | Описание |
---|---|
ReferenceText |
Текст, на который вычисляется произношение. Параметр ReferenceText является необязательным. Задайте справочный текст, если требуется выполнить оценку скрипта для сценария обучения языка чтения. Не устанавливайте текст ссылки, если вы хотите выполнить нескрипированную оценку.Различия в ценах между скриптами и неписаной оценкой см. в разделе "Цены". |
GradingSystem |
Система баллов для калибровки оценок. FivePoint дает оценку с плавающей запятой от 0 до 5. HundredMark дает оценку с плавающей запятой от 0 до 100. По умолчанию: FivePoint . |
Granularity |
Определяет самый низкий уровень детализации оценки. Возвращает оценки для уровней, превышающих или равных минимальному значению. Допустимые значения: Phoneme оценка на полном тексте, слове, слоге и фонеме Word , которая показывает оценку на уровне полнотекстового и текстового уровня, или FullText , где отображается оценка только на уровне полного текста. Предоставленный полный текст ссылки может быть словом, предложением или абзацем. Он зависит от текста вводимых ссылок. По умолчанию: Phoneme . |
EnableMiscue |
Включает вычисление оговорок при сравнении произнесенных слов с эталонным текстом. Включение несоответствия является необязательным. Если это значение равно True , результатом ErrorType на основе сравнения может быть установлено значение Omission или Insertion . Значения: False и True . По умолчанию: False . Чтобы включить вычисление несоответствия, задайте для нее EnableMiscue значение True . Вы можете ссылаться на фрагмент кода над таблицей. |
ScenarioId |
GUID для настраиваемой системы точек. |
Методы конфигурации
В этой таблице перечислены некоторые необязательные методы, которые можно задать для PronunciationAssessmentConfig
объекта.
Примечание.
Оценки содержимого и просодий доступны только в языковом стандарте en-US .
Чтобы изучить содержимое и оценки prosody, обновите пакет SDK версии 1.35.0 или более поздней.
Для параметра раздела нет ограничения длины.
Метод | Description |
---|---|
EnableProsodyAssessment |
Включает оценку просодии для оценки произношения. Эта функция оценивает такие аспекты, как стресс, интонация, скорость речи и ритм. Эта функция предоставляет аналитические сведения о естественности и экспрессивности вашей речи. Включение оценки prosody является необязательным. Если этот метод вызывается, ProsodyScore возвращается значение результата. |
EnableContentAssessmentWithTopic |
Включает оценку содержимого. Оценка содержимого является частью неписаной оценки сценария обучения языка. Предоставив описание, вы можете улучшить понимание конкретной темы, о которой говорится. Например, в вызове pronunciationAssessmentConfig.EnableContentAssessmentWithTopic("greeting"); C#. Вы можете заменить "приветствие" нужным текстом, чтобы описать раздел. Описание не имеет ограничения длины и в настоящее время поддерживает только языковой en-US стандарт. |
Получение результатов оценки произношения
При распознавании речи можно запросить результаты оценки произношения в виде объектов SDK или строки JSON.
using (var speechRecognizer = new SpeechRecognizer(
speechConfig,
audioConfig))
{
// (Optional) get the session ID
speechRecognizer.SessionStarted += (s, e) => {
Console.WriteLine($"SESSION ID: {e.SessionId}");
};
pronunciationAssessmentConfig.ApplyTo(speechRecognizer);
var speechRecognitionResult = await speechRecognizer.RecognizeOnceAsync();
// The pronunciation assessment result as a Speech SDK object
var pronunciationAssessmentResult =
PronunciationAssessmentResult.FromResult(speechRecognitionResult);
// The pronunciation assessment result as a JSON string
var pronunciationAssessmentResultJson = speechRecognitionResult.Properties.GetProperty(PropertyId.SpeechServiceResponse_JsonResult);
}
Результаты Word, слога и phoneme недоступны с помощью объектов SDK с пакетом SDK для C++. Результаты для слова, слога и фонемы доступны только в строке JSON.
auto speechRecognizer = SpeechRecognizer::FromConfig(
speechConfig,
audioConfig);
// (Optional) get the session ID
speechRecognizer->SessionStarted.Connect([](const SessionEventArgs& e) {
std::cout << "SESSION ID: " << e.SessionId << std::endl;
});
pronunciationAssessmentConfig->ApplyTo(speechRecognizer);
speechRecognitionResult = speechRecognizer->RecognizeOnceAsync().get();
// The pronunciation assessment result as a Speech SDK object
auto pronunciationAssessmentResult =
PronunciationAssessmentResult::FromResult(speechRecognitionResult);
// The pronunciation assessment result as a JSON string
auto pronunciationAssessmentResultJson = speechRecognitionResult->Properties.GetProperty(PropertyId::SpeechServiceResponse_JsonResult);
Чтобы узнать, как указать язык обучения для оценки произношения в собственном приложении, см . пример кода.
Для разработки приложений Android можно использовать слова, слоги и результаты phoneme с помощью объектов SDK с пакетом SDK для Java. Эти результаты также доступны в строке JSON. Для разрабатываемых приложений среды выполнения Java (JRE) результаты по слову, слогу и фонеме доступны только в строке JSON.
SpeechRecognizer speechRecognizer = new SpeechRecognizer(
speechConfig,
audioConfig);
// (Optional) get the session ID
speechRecognizer.sessionStarted.addEventListener((s, e) -> {
System.out.println("SESSION ID: " + e.getSessionId());
});
pronunciationAssessmentConfig.applyTo(speechRecognizer);
Future<SpeechRecognitionResult> future = speechRecognizer.recognizeOnceAsync();
SpeechRecognitionResult speechRecognitionResult = future.get(30, TimeUnit.SECONDS);
// The pronunciation assessment result as a Speech SDK object
PronunciationAssessmentResult pronunciationAssessmentResult =
PronunciationAssessmentResult.fromResult(speechRecognitionResult);
// The pronunciation assessment result as a JSON string
String pronunciationAssessmentResultJson = speechRecognitionResult.getProperties().getProperty(PropertyId.SpeechServiceResponse_JsonResult);
recognizer.close();
speechConfig.close();
audioConfig.close();
pronunciationAssessmentConfig.close();
speechRecognitionResult.close();
var speechRecognizer = SpeechSDK.SpeechRecognizer.FromConfig(speechConfig, audioConfig);
// (Optional) get the session ID
speechRecognizer.sessionStarted = (s, e) => {
console.log(`SESSION ID: ${e.sessionId}`);
};
pronunciationAssessmentConfig.applyTo(speechRecognizer);
speechRecognizer.recognizeOnceAsync((speechRecognitionResult: SpeechSDK.SpeechRecognitionResult) => {
// The pronunciation assessment result as a Speech SDK object
var pronunciationAssessmentResult = SpeechSDK.PronunciationAssessmentResult.fromResult(speechRecognitionResult);
// The pronunciation assessment result as a JSON string
var pronunciationAssessmentResultJson = speechRecognitionResult.properties.getProperty(SpeechSDK.PropertyId.SpeechServiceResponse_JsonResult);
},
{});
Чтобы узнать, как указать язык обучения для оценки произношения в собственном приложении, см . пример кода.
speech_recognizer = speechsdk.SpeechRecognizer(
speech_config=speech_config, \
audio_config=audio_config)
# (Optional) get the session ID
speech_recognizer.session_started.connect(lambda evt: print(f"SESSION ID: {evt.session_id}"))
pronunciation_assessment_config.apply_to(speech_recognizer)
speech_recognition_result = speech_recognizer.recognize_once()
# The pronunciation assessment result as a Speech SDK object
pronunciation_assessment_result = speechsdk.PronunciationAssessmentResult(speech_recognition_result)
# The pronunciation assessment result as a JSON string
pronunciation_assessment_result_json = speech_recognition_result.properties.get(speechsdk.PropertyId.SpeechServiceResponse_JsonResult)
Чтобы узнать, как указать язык обучения для оценки произношения в собственном приложении, см . пример кода.
SPXSpeechRecognizer* speechRecognizer = \
[[SPXSpeechRecognizer alloc] initWithSpeechConfiguration:speechConfig
audioConfiguration:audioConfig];
// (Optional) get the session ID
[speechRecognizer addSessionStartedEventHandler: ^ (SPXRecognizer *sender, SPXSessionEventArgs *eventArgs) {
NSLog(@"SESSION ID: %@", eventArgs.sessionId);
}];
[pronunciationAssessmentConfig applyToRecognizer:speechRecognizer];
SPXSpeechRecognitionResult *speechRecognitionResult = [speechRecognizer recognizeOnce];
// The pronunciation assessment result as a Speech SDK object
SPXPronunciationAssessmentResult* pronunciationAssessmentResult = [[SPXPronunciationAssessmentResult alloc] init:speechRecognitionResult];
// The pronunciation assessment result as a JSON string
NSString* pronunciationAssessmentResultJson = [speechRecognitionResult.properties getPropertyByName:SPXSpeechServiceResponseJsonResult];
Чтобы узнать, как указать язык обучения для оценки произношения в собственном приложении, см . пример кода.
let speechRecognizer = try! SPXSpeechRecognizer(speechConfiguration: speechConfig, audioConfiguration: audioConfig)
// (Optional) get the session ID
speechRecognizer.addSessionStartedEventHandler { (sender, evt) in
print("SESSION ID: \(evt.sessionId)")
try! pronConfig.apply(to: speechRecognizer)
let speechRecognitionResult = try? speechRecognizer.recognizeOnce()
// The pronunciation assessment result as a Speech SDK object
let pronunciationAssessmentResult = SPXPronunciationAssessmentResult(speechRecognitionResult!)
// The pronunciation assessment result as a JSON string
let pronunciationAssessmentResultJson = speechRecognitionResult!.properties?.getPropertyBy(SPXPropertyId.speechServiceResponseJsonResult)
Результирующие параметры
В зависимости от того, используете ли вы скрипт или неписаную оценку, вы можете получить различные результаты оценки произношения. Оценка сценариев — это сценарий обучения на языке чтения. Неописаная оценка предназначена для сценария обучения языка.
Примечание.
Различия в ценах между скриптами и неписаной оценкой см. в разделе "Цены".
Результаты оценки с помощью скриптов
В этой таблице перечислены некоторые ключевые результаты оценки произношения для сценария оценки или сценария чтения.
Параметр | Описание | Степень детализации |
---|---|---|
AccuracyScore |
Точность произношения речи. Правильность указывает на степень соответствия фонем произношению носителя языка. Слог, слово и оценка точности полнотекстового текста агрегируются из оценки точности на уровне фонема и уточнены с целями оценки. | Уровень фонема, Уровень слога (только для США), Уровень Word, Уровень полнотекстового текста |
FluencyScore |
Владение языком лица, которому принадлежит данная речь. Владение языком указывает на степень соответствия речи использованию пауз между словами носителем языка. | Уровень полнотекстового текста |
CompletenessScore |
Полнота речи: определяется по соотношению произнесенных слов к входному эталонному тексту. | Уровень полнотекстового текста |
ProsodyScore |
Просодию данной речи. Prosody указывает, насколько естественно данное речь, включая стресс, интонацию, скорость речи и ритм. | Уровень полнотекстового текста |
PronScore |
Общая оценка качества произношения данной речи. PronScore вычисляется от AccuracyScore , FluencyScore CompletenessScore и ProsodyScore с весом, при условии, что ProsodyScore и CompletenessScore доступны. Если любой из них недоступен, PronScore не рассмотрите этот показатель. |
Уровень полнотекстового текста |
ErrorType |
Это значение указывает тип ошибки по сравнению с ссылочным текстом. Варианты включают, если слово опущено, вставлено или неправильно вставлено с разрывом. Он также указывает на отсутствие перерыва при препинаниях. Он также указывает, плохо произносится ли слово, или монотонно растет, падает или плоский на речевых фрагментах. Возможные значения не являются None ошибками в этом слове, , Omission Insertion , Mispronunciation , , UnexpectedBreak и MissingBreak Monotone . Тип ошибки может быть Mispronunciation , если произношение AccuracyScore слова ниже 60. |
Уровень Word |
Незаписанные результаты оценки
В этой таблице перечислены некоторые ключевые результаты оценки произношения для неписаной оценки или сценария речи.
VocabularyScore
, GrammarScore
и TopicScore
параметры свернуты к объединенной оценке содержимого.
Примечание.
Оценки содержимого и просодий доступны только в языковом стандарте en-US .
Параметр ответа | Description | Степень детализации |
---|---|---|
AccuracyScore |
Точность произношения речи. Правильность указывает на степень соответствия фонем произношению носителя языка. Слоги, слова и оценки точности полнотекстового текста агрегируются из оценки точности на уровне телефона и уточняются с целями оценки. | Уровень фонема, Уровень слога (только для США), Уровень Word, Уровень полнотекстового текста |
FluencyScore |
Владение языком лица, которому принадлежит данная речь. Владение языком указывает на степень соответствия речи использованию пауз между словами носителем языка. | Уровень полнотекстового текста |
ProsodyScore |
Просодию данной речи. Prosody указывает, насколько естественно данное речь, включая стресс, интонацию, скорость речи и ритм. | Уровень полнотекстового текста |
VocabularyScore |
Знание лексического использования. Он оценивает эффективное использование слов говорящего и их правильность в данном контексте для точного выражения идей и уровня лексической сложности. | Уровень полнотекстового текста |
GrammarScore |
Правильность использования грамматики и различных шаблонов предложений. Лексическая точность, грамматическая точность и разнообразие структур предложений совместно повышают грамматические ошибки. | Уровень полнотекстового текста |
TopicScore |
Уровень понимания и взаимодействия с темой, который предоставляет аналитические сведения о способности докладчика выразить свои мысли и идеи эффективно и способность взаимодействовать с этой темой. | Уровень полнотекстового текста |
PronScore |
Общая оценка качества произношения данной речи. PronScore вычисляется от AccuracyScore , FluencyScore и ProsodyScore с весом, при условии, что ProsodyScore он доступен. Если ProsodyScore он недоступен, PronScore не рассмотрите этот показатель. |
Уровень полнотекстового текста |
ErrorType |
Слово плохо произносится, неправильно вставлено с перерывом или отсутствует разрыв при препинаниях. Он также указывает, является ли произношение монотонно растет, падает или плоский на речевых фрагментах. Возможные значения не являются None ошибками в этом слове, Mispronunciation , , UnexpectedBreak и MissingBreak Monotone . |
Уровень Word |
В следующей таблице описаны результаты оценки просодии.
Поле | Description |
---|---|
ProsodyScore |
Просодийный счет всего речевых фрагментов. |
Feedback |
Отзывы о уровне слова, включая Break и Intonation . |
Break |
|
ErrorTypes |
Типы ошибок, связанные с разрывами, включая UnexpectedBreak и MissingBreak . Текущая версия не предоставляет тип ошибки останова. Необходимо задать пороговые значения в полях UnexpectedBreak – Confidence и MissingBreak – confidence решить, есть ли непредвиденный перерыв или отсутствие перерыва перед словом. |
UnexpectedBreak |
Указывает непредвиденный разрыв перед словом. |
MissingBreak |
Указывает отсутствующий разрыв перед словом. |
Thresholds |
Предлагаемые пороговые значения для обоих показателей достоверности — 0,75. Это означает, что если значение UnexpectedBreak – Confidence больше 0,75, он имеет непредвиденный разрыв. Если значение MissingBreak – confidence больше 0,75, у него отсутствует разрыв. Хотя 0.75 — это значение, которое мы рекомендуем, лучше настроить пороговые значения на основе собственного сценария. Если вы хотите иметь конфиденциальность обнаружения переменных для этих двух разрывов, можно назначить разные пороговые UnexpectedBreak - Confidence значения для полей и MissingBreak - Confidence полей. |
Intonation |
Указывает интонацию в речи. |
ErrorTypes |
Типы ошибок, связанные с интонацией, в настоящее время поддерживают только Monotone. Monotone Если в поле ErrorTypes существует, высказывание обнаруживается монотонным. Монотон обнаруживается во всем высказывании, но тег назначается всем словам. Все слова в одном высказывании используют одну и ту же монотонную информацию об обнаружении. |
Monotone |
Указывает монотонную речь. |
Thresholds (Monotone Confidence) |
Поля Monotone - SyllablePitchDeltaConfidence зарезервированы для обнаружения монотонных пользователей. Если вы не удовлетворены предоставленным монотонным решением, настройте пороговые значения для этих полей, чтобы настроить обнаружение в соответствии с вашими предпочтениями. |
Пример результата JSON
Результаты оценки произношения скриптов для произнесемого слова hello отображаются в виде строки JSON в следующем примере.
- Фонетический алфавит — IPA.
- Слоги возвращаются вместе с фонемами для одного и того же слова.
- Значения
Offset
иDuration
можно использовать для согласования слогов с соответствующими фонемами. Например, начальное смещение (117000000) второго слогаloʊ
соответствует третьему фонему.l
Смещение представляет время начала распознанной речи в звуковом потоке. Значение измеряется в 100 единицах наносекунда. Дополнительные сведения иOffset
Duration
дополнительные сведения см. в свойствах ответа. - Существует пять, которые соответствуют количеству
NBestPhonemes
запрошенных телефонных параметров. - В
Phonemes
наиболее вероятной голосовой фонемой былаə
, а не ожидаемая фонемаɛ
. Оценка достоверности ожидаемой фонемыɛ
всего 47. Другие возможные соответствия получили оценки достоверности 52, 17 и 2.
{
"Id": "bbb42ea51bdb46d19a1d685e635fe173",
"RecognitionStatus": 0,
"Offset": 7500000,
"Duration": 13800000,
"DisplayText": "Hello.",
"NBest": [
{
"Confidence": 0.975003,
"Lexical": "hello",
"ITN": "hello",
"MaskedITN": "hello",
"Display": "Hello.",
"PronunciationAssessment": {
"AccuracyScore": 100,
"FluencyScore": 100,
"CompletenessScore": 100,
"PronScore": 100
},
"Words": [
{
"Word": "hello",
"Offset": 7500000,
"Duration": 13800000,
"PronunciationAssessment": {
"AccuracyScore": 99.0,
"ErrorType": "None"
},
"Syllables": [
{
"Syllable": "hɛ",
"PronunciationAssessment": {
"AccuracyScore": 91.0
},
"Offset": 7500000,
"Duration": 4100000
},
{
"Syllable": "loʊ",
"PronunciationAssessment": {
"AccuracyScore": 100.0
},
"Offset": 11700000,
"Duration": 9600000
}
],
"Phonemes": [
{
"Phoneme": "h",
"PronunciationAssessment": {
"AccuracyScore": 98.0,
"NBestPhonemes": [
{
"Phoneme": "h",
"Score": 100.0
},
{
"Phoneme": "oʊ",
"Score": 52.0
},
{
"Phoneme": "ə",
"Score": 35.0
},
{
"Phoneme": "k",
"Score": 23.0
},
{
"Phoneme": "æ",
"Score": 20.0
}
]
},
"Offset": 7500000,
"Duration": 3500000
},
{
"Phoneme": "ɛ",
"PronunciationAssessment": {
"AccuracyScore": 47.0,
"NBestPhonemes": [
{
"Phoneme": "ə",
"Score": 100.0
},
{
"Phoneme": "l",
"Score": 52.0
},
{
"Phoneme": "ɛ",
"Score": 47.0
},
{
"Phoneme": "h",
"Score": 17.0
},
{
"Phoneme": "æ",
"Score": 2.0
}
]
},
"Offset": 11100000,
"Duration": 500000
},
{
"Phoneme": "l",
"PronunciationAssessment": {
"AccuracyScore": 100.0,
"NBestPhonemes": [
{
"Phoneme": "l",
"Score": 100.0
},
{
"Phoneme": "oʊ",
"Score": 46.0
},
{
"Phoneme": "ə",
"Score": 5.0
},
{
"Phoneme": "ɛ",
"Score": 3.0
},
{
"Phoneme": "u",
"Score": 1.0
}
]
},
"Offset": 11700000,
"Duration": 1100000
},
{
"Phoneme": "oʊ",
"PronunciationAssessment": {
"AccuracyScore": 100.0,
"NBestPhonemes": [
{
"Phoneme": "oʊ",
"Score": 100.0
},
{
"Phoneme": "d",
"Score": 29.0
},
{
"Phoneme": "t",
"Score": 24.0
},
{
"Phoneme": "n",
"Score": 22.0
},
{
"Phoneme": "l",
"Score": 18.0
}
]
},
"Offset": 12900000,
"Duration": 8400000
}
]
}
]
}
]
}
Вы можете получить показатели оценки произношения для:
- всего текста,
- Слова
- групп слогов,
- Фонемы в формате SAPI или IPA
Поддерживаемые функции на языковой стандарт
В следующей таблице приведены сведения о функциях, которые поддерживают языковые стандарта. Дополнительные сведения см. в следующих разделах. Если необходимые языковые параметры не указаны в следующей таблице для поддерживаемой функции, заполните эту форму потребления для дальнейшей помощи.
Алфавит фонема | IPA | SAPI |
---|---|---|
Имя phoneme | en-US |
en-US , zh-CN |
Слоговая группа | en-US |
en-US |
Голосовые фонемы | en-US |
en-US |
групп слогов,
Оценка произношения может предоставлять результаты оценки на уровне слогов. Слово обычно произносится слогом слогом, а не фонемой по телефону. Группирование в слогах более удобочитаемо и выравнивается с привычками говорить.
Оценка произношения поддерживает группы слогов только в en-US
IPA и с SAPI.
В следующей таблице приведены примеры фонем в сравнении с соответствующими слогами.
Пример слова | Фонемы | Слоги |
---|---|---|
technological | teknələdʒɪkl | tek·nə·lɑ·dʒɪkl |
hello | hɛloʊ | hɛ·loʊ |
luck | lʌk | lʌk |
photosynthesis | foʊtəsɪnθəsɪs | foʊ·tə·sɪn·θə·sɪs |
Чтобы запросить результаты на уровне слогов вместе с фонемами, задайте для параметра настройки детализации значение Phoneme
.
Формат фонетического алфавита
Оценка произношения поддерживает телефонные имена в en-US
IPA и en-US
zh-CN
с SAPI.
Для языковых стандартов, поддерживающих имя телефонной цепочки, имя телефонной цепочки предоставляется вместе с оценкой. Имена телефонных выражений помогают определить, какие фонемы были четко или неточно. Для других языковых стандартов можно получить только оценку телефонной связи.
В следующей таблице приведены примеры фонем SAPI в сравнении с соответствующими фонемами IPA.
Пример слова | Фонемы SAPI | Фонемы IPA |
---|---|---|
hello | h eh l ow | h ɛ l oʊ |
luck | l ah k | l ʌ k |
photosynthesis | f ow t ax s ih n th ax s ih s | f oʊ t ə s ɪ n θ ə s ɪ s |
Чтобы запросить фонемы IPA, установите для фонетического алфавита значение IPA
. Если вы не указываете алфавит, то по умолчанию фонемы находятся в формате SAPI.
pronunciationAssessmentConfig.PhonemeAlphabet = "IPA";
auto pronunciationAssessmentConfig = PronunciationAssessmentConfig::CreateFromJson("{\"referenceText\":\"good morning\",\"gradingSystem\":\"HundredMark\",\"granularity\":\"Phoneme\",\"phonemeAlphabet\":\"IPA\"}");
PronunciationAssessmentConfig pronunciationAssessmentConfig = PronunciationAssessmentConfig.fromJson("{\"referenceText\":\"good morning\",\"gradingSystem\":\"HundredMark\",\"granularity\":\"Phoneme\",\"phonemeAlphabet\":\"IPA\"}");
pronunciation_assessment_config = speechsdk.PronunciationAssessmentConfig(json_string="{\"referenceText\":\"good morning\",\"gradingSystem\":\"HundredMark\",\"granularity\":\"Phoneme\",\"phonemeAlphabet\":\"IPA\"}")
var pronunciationAssessmentConfig = SpeechSDK.PronunciationAssessmentConfig.fromJSON("{\"referenceText\":\"good morning\",\"gradingSystem\":\"HundredMark\",\"granularity\":\"Phoneme\",\"phonemeAlphabet\":\"IPA\"}");
pronunciationAssessmentConfig.phonemeAlphabet = @"IPA";
pronunciationAssessmentConfig?.phonemeAlphabet = "IPA"
Оценка речевых телефонных параметров
С помощью голосовых телефонных параметров вы можете получить оценки достоверности, которые указывают, насколько вероятно, разговорные телефонные месы соответствовали ожидаемым телефонным месям.
Оценка произношения поддерживает разговорные фонемы в en-US
IPA и с SAPI.
Например, чтобы получить полный речной звук для слова Hello
, можно сцепить первый разговорный телефон для каждого ожидаемого фонема с наивысшей оценкой достоверности. В следующем результате оценки, когда вы говорите словоhello
, ожидаемые фонемы IPA.h ɛ l oʊ
Тем не менее, фактические разговорные фонемы.h ə l oʊ
В этом примере у вас есть пять возможных кандидатов для каждого ожидаемого фонема. Результат оценки показывает, что наиболее вероятный разговорный телефон был вместо ожидаемого фонема ə
ɛ
. Оценка достоверности ожидаемой фонемы ɛ
всего 47. Другие возможные соответствия получили оценки достоверности 52, 17 и 2.
{
"Id": "bbb42ea51bdb46d19a1d685e635fe173",
"RecognitionStatus": 0,
"Offset": 7500000,
"Duration": 13800000,
"DisplayText": "Hello.",
"NBest": [
{
"Confidence": 0.975003,
"Lexical": "hello",
"ITN": "hello",
"MaskedITN": "hello",
"Display": "Hello.",
"PronunciationAssessment": {
"AccuracyScore": 100,
"FluencyScore": 100,
"CompletenessScore": 100,
"PronScore": 100
},
"Words": [
{
"Word": "hello",
"Offset": 7500000,
"Duration": 13800000,
"PronunciationAssessment": {
"AccuracyScore": 99.0,
"ErrorType": "None"
},
"Syllables": [
{
"Syllable": "hɛ",
"PronunciationAssessment": {
"AccuracyScore": 91.0
},
"Offset": 7500000,
"Duration": 4100000
},
{
"Syllable": "loʊ",
"PronunciationAssessment": {
"AccuracyScore": 100.0
},
"Offset": 11700000,
"Duration": 9600000
}
],
"Phonemes": [
{
"Phoneme": "h",
"PronunciationAssessment": {
"AccuracyScore": 98.0,
"NBestPhonemes": [
{
"Phoneme": "h",
"Score": 100.0
},
{
"Phoneme": "oʊ",
"Score": 52.0
},
{
"Phoneme": "ə",
"Score": 35.0
},
{
"Phoneme": "k",
"Score": 23.0
},
{
"Phoneme": "æ",
"Score": 20.0
}
]
},
"Offset": 7500000,
"Duration": 3500000
},
{
"Phoneme": "ɛ",
"PronunciationAssessment": {
"AccuracyScore": 47.0,
"NBestPhonemes": [
{
"Phoneme": "ə",
"Score": 100.0
},
{
"Phoneme": "l",
"Score": 52.0
},
{
"Phoneme": "ɛ",
"Score": 47.0
},
{
"Phoneme": "h",
"Score": 17.0
},
{
"Phoneme": "æ",
"Score": 2.0
}
]
},
"Offset": 11100000,
"Duration": 500000
},
{
"Phoneme": "l",
"PronunciationAssessment": {
"AccuracyScore": 100.0,
"NBestPhonemes": [
{
"Phoneme": "l",
"Score": 100.0
},
{
"Phoneme": "oʊ",
"Score": 46.0
},
{
"Phoneme": "ə",
"Score": 5.0
},
{
"Phoneme": "ɛ",
"Score": 3.0
},
{
"Phoneme": "u",
"Score": 1.0
}
]
},
"Offset": 11700000,
"Duration": 1100000
},
{
"Phoneme": "oʊ",
"PronunciationAssessment": {
"AccuracyScore": 100.0,
"NBestPhonemes": [
{
"Phoneme": "oʊ",
"Score": 100.0
},
{
"Phoneme": "d",
"Score": 29.0
},
{
"Phoneme": "t",
"Score": 24.0
},
{
"Phoneme": "n",
"Score": 22.0
},
{
"Phoneme": "l",
"Score": 18.0
}
]
},
"Offset": 12900000,
"Duration": 8400000
}
]
}
]
}
]
}
Чтобы указать, сколько возможных голосовых фонем будут получать оценки достоверности и будут ли они вообще использоваться, присвойте параметру NBestPhonemeCount
целочисленное значение, например 5
.
pronunciationAssessmentConfig.NBestPhonemeCount = 5;
auto pronunciationAssessmentConfig = PronunciationAssessmentConfig::CreateFromJson("{\"referenceText\":\"good morning\",\"gradingSystem\":\"HundredMark\",\"granularity\":\"Phoneme\",\"phonemeAlphabet\":\"IPA\",\"nBestPhonemeCount\":5}");
PronunciationAssessmentConfig pronunciationAssessmentConfig = PronunciationAssessmentConfig.fromJson("{\"referenceText\":\"good morning\",\"gradingSystem\":\"HundredMark\",\"granularity\":\"Phoneme\",\"phonemeAlphabet\":\"IPA\",\"nBestPhonemeCount\":5}");
pronunciation_assessment_config = speechsdk.PronunciationAssessmentConfig(json_string="{\"referenceText\":\"good morning\",\"gradingSystem\":\"HundredMark\",\"granularity\":\"Phoneme\",\"phonemeAlphabet\":\"IPA\",\"nBestPhonemeCount\":5}")
var pronunciationAssessmentConfig = SpeechSDK.PronunciationAssessmentConfig.fromJSON("{\"referenceText\":\"good morning\",\"gradingSystem\":\"HundredMark\",\"granularity\":\"Phoneme\",\"phonemeAlphabet\":\"IPA\",\"nBestPhonemeCount\":5}");
pronunciationAssessmentConfig.nbestPhonemeCount = 5;
pronunciationAssessmentConfig?.nbestPhonemeCount = 5
Вычисление оценки произношения
Оценки произношения вычисляются по точности весовой точности, просодии, беглости и полноте на основе конкретных формул для чтения и речи сценариев.
При сортировке показателей точности, просодии, беглости и полноты от низкого до высокого (если каждая оценка доступна) и представления наименьшей оценки до самой высокой оценки как s0 до s3, оценка произношения вычисляется следующим образом:
Для чтения сценария:
- С оценкой prosody: PronScore = 0,4 * s0 + 0,2 * s1 + 0,2 * s2 + 0,2 * s3
- Без оценки prosody: PronScore = 0,6 * s0 + 0,2 * s1 + 0,2 * s2
Для сценария речи (оценка полноты не применима):
- С оценкой prosody: PronScore = 0,6 * s0 + 0,2 * s1 + 0,2 * s2
- Без оценки prosody: PronScore = 0,6 * s0 + 0,4 * s1
Эта формула предоставляет взвешемое вычисление на основе важности каждой оценки, обеспечивая комплексную оценку произношения.
Связанный контент
- Узнайте о тесте качества.
- Попробуйте оценить произношение в студии.
- Ознакомьтесь с демонстрацией оценки произношения, удобной для развертывания.
- Просмотрите видео демонстрацию оценки произношения.