Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
В этой статье вы узнаете, как оценить произношение с речью в тексте с помощью пакета 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
для включения оценки просодии. Дополнительные сведения см. в разделе "Методы конфигурации".
var pronunciationAssessmentConfig = new PronunciationAssessmentConfig(
referenceText: "",
gradingSystem: GradingSystem.HundredMark,
granularity: Granularity.Phoneme,
enableMiscue: false);
pronunciationAssessmentConfig.EnableProsodyAssessment();
auto pronunciationConfig = PronunciationAssessmentConfig::Create("", PronunciationAssessmentGradingSystem::HundredMark, PronunciationAssessmentGranularity::Phoneme, false);
pronunciationConfig->EnableProsodyAssessment();
PronunciationAssessmentConfig pronunciationConfig = new PronunciationAssessmentConfig("",
PronunciationAssessmentGradingSystem.HundredMark, PronunciationAssessmentGranularity.Phoneme, false);
pronunciationConfig.enableProsodyAssessment();
pronunciation_config = speechsdk.PronunciationAssessmentConfig(
reference_text="",
grading_system=speechsdk.PronunciationAssessmentGradingSystem.HundredMark,
granularity=speechsdk.PronunciationAssessmentGranularity.Phoneme,
enable_miscue=False)
pronunciation_config.enable_prosody_assessment()
var pronunciationAssessmentConfig = new sdk.PronunciationAssessmentConfig(
referenceText: "",
gradingSystem: sdk.PronunciationAssessmentGradingSystem.HundredMark,
granularity: sdk.PronunciationAssessmentGranularity.Phoneme,
enableMiscue: false);
pronunciationAssessmentConfig.enableProsodyAssessment();
SPXPronunciationAssessmentConfiguration *pronunicationConfig =
[[SPXPronunciationAssessmentConfiguration alloc] init:@"" gradingSystem:SPXPronunciationAssessmentGradingSystem_HundredMark granularity:SPXPronunciationAssessmentGranularity_Phoneme enableMiscue:false];
[pronunicationConfig enableProsodyAssessment];
let pronAssessmentConfig = try! SPXPronunciationAssessmentConfiguration("",
gradingSystem: .hundredMark,
granularity: .phoneme,
enableMiscue: false)
pronAssessmentConfig.enableProsodyAssessment()
В этой таблице перечислены некоторые ключевые параметры конфигурации для оценки произношения.
Параметр | Описание |
---|---|
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 локали.
Чтобы изучить оценку прозодии, обновите пакет SDK до версии 1.35.0 или более поздней.
Метод | Описание |
---|---|
EnableProsodyAssessment |
Включает оценку просодии для оценки произношения. Эта функция оценивает такие аспекты, как стресс, интонация, скорость речи и ритм. Эта функция предоставляет аналитические сведения о естественности и экспрессивности вашей речи. Включение оценки просодии является необязательным. Если этот метод вызывается, возвращается значение результата ProsodyScore . |
Получение результатов оценки произношения
При распознавании речи можно запросить результаты оценки произношения в виде объектов ПАКЕТА 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);
}
Результаты слова, слога и фонемы недоступны при использовании объектов SDK для C++. Результаты Word, слога и фонемы доступны только в строке 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 результаты по словам, слогам и фонемам доступны с использованием объектов SDK с пакетом Speech SDK для Java. Результаты также доступны в строке JSON. Для разработки приложений среды выполнения Java (JRE) слово, слог и результаты phoneme доступны только в строке 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 |
Точность произношения речи. Правильность указывает на степень соответствия фонем произношению носителя языка. Слог, слово и показатели точности полнотекстового текста агрегируются из показателей точности на уровне фонем и уточнены в соответствии с целями оценки. | Уровень фонем, Уровень слога (толькоen-US), Уровень слова, Уровень полнотекстового текста |
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 |
Незаписанные результаты оценки
В этой таблице перечислены некоторые ключевые результаты оценки произношения для неписаной оценки или сценария речи.
Замечание
Оценка просодии доступна только в en-US локали.
Параметр ответа | Описание | Степень детализации |
---|---|---|
AccuracyScore |
Точность произношения речи. Правильность указывает на степень соответствия фонем произношению носителя языка. Слоги, слова и полнотекстовые оценки точности агрегируются из оценки точности на уровне фонем и уточняются с учётом целей оценки. | Уровень фонем, Уровень слога (толькоen-US), Уровень слова, Уровень полнотекстового текста |
FluencyScore |
Беглость заданной речи. Владение языком указывает на степень соответствия речи использованию пауз между словами носителем языка. | Уровень полнотекстового текста |
ProsodyScore |
Просодию данной речи. Prosody указывает, насколько естественно данное речь, включая стресс, интонацию, скорость речи и ритм. | Уровень полнотекстового текста |
PronScore |
Общая оценка качества произношения данной речи.
PronScore вычисляется из AccuracyScore , FluencyScore и ProsodyScore с учетом веса, при условии, что ProsodyScore доступен. Если ProsodyScore недоступен, PronScore не будет учитывать этот балл. |
Уровень полнотекстового текста |
ErrorType |
Слово плохо произносится, неправильно вставлено с паузой или отсутствует пауза при знаках препинания. Он также указывает, является ли произношение в высказании монотонно возрастающим, убывающим или ровным. Возможные значения: None для обозначения отсутствия ошибки в этом слове, Mispronunciation , UnexpectedBreak , MissingBreak и Monotone . |
Уровень в Word |
В следующей таблице более подробно описаны результаты оценки просодии.
Поле | Описание |
---|---|
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 |
---|---|---|
Имя фонемы | en-US |
en-US , zh-CN |
Слоговая группа | en-US |
en-US |
Речевая фонема | en-US |
en-US |
Группы слогов
Оценка произношения может предоставлять результаты оценки на уровне слогов. Слово обычно произносится по слогам, а не по фонемам. Разделение на слоги более понятно и соответствует привычкам речи.
Оценка произношения поддерживает группы слогов только в формате en-US
с помощью IPA и SAPI.
В следующей таблице сравниваются примеры фонем с соответствующими слогами.
Пример слова | Фонемы | Слог |
---|---|---|
технологический | текнэлоджикал | тек·но·ло·джи·кл |
Привет | привет | хэлоу |
удача | lʌk | lʌk |
фотосинтез | фотосинтез | фото·син·тез |
Чтобы запросить результаты на уровне слога вместе с фонемами, установите значение для параметра Phoneme
.
Формат фонемного алфавита
Оценка произношения поддерживает названия фонем в en-US
с IPA и в en-US
и zh-CN
с SAPI.
Для локалей, поддерживающих имя фонемы, имя фонемы предоставляется вместе с оценкой. Имена фонем помогают определить, какие фонемы были произнесены правильно или неправильно. Для других языковых стандартов можно получить только оценку фонем.
В следующей таблице сравниваются примеры фонем SAPI с соответствующими фонемами IPA.
Пример слова | Фонемы SAPI | Фонемы IPA |
---|---|---|
Привет | здравствуйте | h ɛ l oʊ |
удача | л ах к | l ʌ k |
фотосинтез | fow t ax s ih n th ax s ih s ih | ф оʊ т ə с ɪ н θ ə с ɪ с |
Чтобы запросить фонемы 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, оценка произношения вычисляется следующим образом:
Для чтения сценария:
- С учетом оценки просодии: PronScore = 0,4 * s0 + 0,2 * s1 + 0,2 * s2 + 0,2 * s3
- Без оценки просодии: PronScore = 0,6 * s0 + 0,2 * s1 + 0,2 * s2
Для сценария речи (оценка полноты не применима):
- С оценкой prosody: PronScore = 0,6 * s0 + 0,2 * s1 + 0,2 * s2
- Без оценки просодии: PronScore = 0,6 * s0 + 0,4 * s1
Эта формула предоставляет взвешемое вычисление на основе важности каждой оценки, обеспечивая комплексную оценку произношения.
Оценка содержимого
Это важно
Оценка содержимого (предварительная версия) через Speech SDK прекратится в июле 2025 года. Вместо этого можно использовать Azure OpenAI в моделях Azure AI Foundry, чтобы получить результаты оценки содержимого, как описано в этом разделе.
Для некоторой распознанной речи также может оказаться полезным получить результаты оценки содержания для словаря, грамматики и релевантности темы. Для получения результатов оценки содержимого можно использовать модель чата, например Azure OpenAI gpt-4o
. Дополнительные сведения об использовании моделей чата см. в моделях Azure OpenAI и в справочной документации по завершению чатов модели ИИ Azure.
Сообщения пользователя и системы используются для задания контекста для модели чата. В следующем примере сообщение пользователя содержит эссе для оценки, а системное сообщение содержит инструкции по оценке эссе.
{
"messages": [
{
"role": "system",
"content": "You are an English teacher and please help to grade a student's essay from vocabulary and grammar and topic relevance on how well the essay aligns with the title, and output format as: {\"vocabulary\": *.*(0-100), \"grammar\": *.*(0-100), \"topic\": *.*(0-100)}."
},
{
"role": "user",
"content": "Example1: this essay: \"sampleSentence1\" has vocabulary and grammar scores of ** and **, respectively. Example2: this essay: \"sampleSentence2\" has vocabulary and grammar scores of ** and **, respectively. Example3: this essay: \"sampleSentence3\" has vocabulary and grammar scores of ** and **, respectively. The essay for you to score is \"sendText\", and the title is \"topic\". The transcript is from speech recognition so that please first add punctuations when needed, remove duplicates and unnecessary un uh from oral speech, then find all the misuse of words and grammar errors in this essay, find advanced words and grammar usages, and finally give scores based on this information. Please only respond as this format {\"vocabulary\": *.*(0-100), \"grammar\": *.*(0-100)}, \"topic\": *.*(0-100)}. [THE TRANSCRIPT FROM SPEECH RECOGNITION IS REDACTED FOR BREVITY]"
}
]
}
Связанный контент
- Узнайте о тесте качества.
- Попробуйте оценить произношение в студии.
- Ознакомьтесь с демонстрацией оценки произношения, удобной для развертывания.
- Просмотрите видео демонстрацию оценки произношения.