Partager via


Utiliser l’évaluation de la prononciation

Dans cet article, vous apprenez à évaluer la prononciation avec la reconnaissance vocale via le Kit de développement logiciel (SDK) Speech. L’évaluation de la prononciation évalue la prononciation des entrées vocales et fournit des commentaires aux orateurs sur la justesse et l’aisance des paroles prononcées.

Remarque

L’évaluation de la prononciation utilise une version spécifique du modèle de reconnaissance vocale, différente du modèle de reconnaissance vocale standard, pour garantir une évaluation cohérente et précise de la prononciation.

Utiliser l'évaluation de la prononciation en mode streaming

L’évaluation de la prononciation prend en charge le mode de diffusion en continu ininterrompu. La durée d’enregistrement peut être illimitée via le kit de développement logiciel (SDK) Speech. Tant que vous n’arrêtez pas l’enregistrement, le processus d’évaluation ne se termine pas et vous pouvez suspendre et reprendre l’évaluation facilement.

Pour plus d’informations sur la disponibilité de l’évaluation de la prononciation, consultez les langues prises en charge et les régions disponibles.

En tant que base de référence, l’utilisation de l’évaluation de la prononciation coûte le même que la reconnaissance vocale pour le niveau de paiement à l’utilisation ou le niveau d’engagement tarification. Si vous acheter un niveau d’engagement pour la reconnaissance vocale, la dépense pour l’évaluation de la prononciation va pour répondre à l’engagement. Pour plus d’informations, voir la tarification.

Pour savoir comment utiliser l’évaluation de la prononciation en mode de diffusion en continu dans votre propre application, consultez l’exemple de code.

Pour savoir comment utiliser l’évaluation de la prononciation en mode de diffusion en continu dans votre propre application, consultez l’exemple de code.

Pour savoir comment utiliser l’évaluation de la prononciation en mode de diffusion en continu dans votre propre application, consultez l’exemple de code.

Pour savoir comment utiliser l’évaluation de la prononciation en mode de diffusion en continu dans votre propre application, consultez l’exemple de code.

Pour savoir comment utiliser l’évaluation de la prononciation en mode de diffusion en continu dans votre propre application, consultez l’exemple de code.

Pour savoir comment utiliser l’évaluation de la prononciation en mode de diffusion en continu dans votre propre application, consultez l’exemple de code.

Pour savoir comment utiliser l’évaluation de la prononciation en mode de diffusion en continu dans votre propre application, consultez l’exemple de code.

Reconnaissance continue

Si votre fichier audio dépasse 30 secondes, utilisez le mode continu pour le traitement. L’exemple de code pour le mode continu se trouve sur GitHub sous la fonction PronunciationAssessmentContinuousWithFile.

Si votre fichier audio dépasse 30 secondes, utilisez le mode continu pour le traitement.

Si votre fichier audio dépasse 30 secondes, utilisez le mode continu pour le traitement. L’exemple de code pour le mode continu se trouve sur GitHub sous la fonction pronunciationAssessmentContinuousWithFile.

Si votre fichier audio dépasse 30 secondes, utilisez le mode continu pour le traitement. L’exemple de code pour le mode continu se trouve sur GitHub sous la fonction pronunciation_assessment_continuous_from_file.

Si votre fichier audio dépasse 30 secondes, utilisez le mode continu pour le traitement. Vous trouverez l’exemple de code pour le mode continu sur GitHub.

Si votre fichier audio dépasse 30 secondes, utilisez le mode continu pour le traitement. L’exemple de code pour le mode continu se trouve sur GitHub sous la fonction pronunciationAssessFromFile.

Si votre fichier audio dépasse 30 secondes, utilisez le mode continu pour le traitement. L’exemple de code pour le mode continu se trouve sur GitHub sous la fonction continuousPronunciationAssessment.

Définir les paramètres de configuration

Remarque

L’évaluation de la prononciation n’est pas disponible avec le kit de développement logiciel (SDK) Speech pour Go. Vous pouvez en savoir plus sur les concepts dans ce guide. Sélectionnez un autre langage de programmation pour votre solution.

Dans le SpeechRecognizer, vous pouvez spécifier la langue à apprendre ou vous entraîner à améliorer la prononciation. Les paramètres régionaux par défaut sont en-US. Pour savoir comment spécifier la langue d’apprentissage pour l’évaluation de la prononciation dans votre propre application, vous pouvez utiliser l’exemple de code suivant.

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)

Conseil

Si vous ne savez pas quels paramètres régionaux définir pour une langue comportant plusieurs paramètres régionaux, essayez chaque paramètre régional séparément. Par exemple, pour l'espagnol, essayez es-ES et es-MX. Déterminez quels paramètres régionaux obtiennent les scores les plus élevés pour votre scénario.

Vous devez créer un objet PronunciationAssessmentConfig. Vous pouvez définir EnableProsodyAssessment et EnableContentAssessmentWithTopic activer l’évaluation de la prosodie et du contenu. Pour obtenir plus d’informations, consultez Méthodes de configuration.

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")

Ce tableau liste certains des paramètres de configuration clés pour l’évaluation de la prononciation.

Paramètre Description
ReferenceText Texte duquel la prononciation est évaluée.

Le paramètre ReferenceText est facultatif. Définissez le texte de référence si vous souhaitez exécuter une évaluation scriptée pour le scénario d’apprentissage du langage de lecture. Ne définissez pas le texte de référence si vous souhaitez exécuter une évaluation non scriptée.

Pour connaître les différences de prix entre les évaluations scriptées et non scriptées, voir Tarification.
GradingSystem Système de points pour la calibration du score. FivePoint donne un score à virgule flottante de 0 à 5. HundredMark donne un score à virgule flottante de 0 à 100. Par défaut : FivePoint.
Granularity Détermine le niveau de granularité d’évaluation le plus bas. Renvoie les scores pour les niveaux supérieurs ou égaux à la valeur minimale. Les valeurs acceptées sont les suivantes : Phoneme, qui affiche le score au niveau du texte intégral, du mot, de la syllabe et du phonème ; Word, qui affiche le score au niveau du texte intégral et du mot ; et FullText, qui affiche le score au niveau du texte intégral uniquement. Le texte de référence complet fourni peut être un mot, une phrase ou un paragraphe. Cela dépend du texte de référence que vous avez saisi. Par défaut : Phoneme.
EnableMiscue Active le calcul des méprises lorsque les mots prononcés sont comparés au texte de référence. L’activation d’une erreur est facultative. Si cette valeur est True, la valeur de résultat ErrorType peut être définie sur Omission ou Insertion sur la base de la comparaison. Les valeurs sont False et True. Par défaut : False. Pour activer le calcul erroné, définissez EnableMiscue sur True. Vous pouvez faire référence à l’extrait de code au-dessus du tableau.
ScenarioId Un GUID pour un système de points personnalisé.

Méthodes de configuration

Ce tableau répertorie quelques-unes des méthodes facultatives que vous pouvez définir pour l’objet PronunciationAssessmentConfig.

Remarque

Les évaluations de contenu et de prosodie ne sont disponibles que dans les paramètres régionaux en-US.

Pour explorer les évaluations du contenu et de la prosodie, effectuez une mise à niveau vers la version 1.35.0 du Kit de développement logiciel (SDK) ou ultérieure.

Il n’existe aucune limite de longueur pour le paramètre de rubrique (topic).

Méthode Description
EnableProsodyAssessment Permet d’activer l’évaluation de la prosodie pour évaluer votre prononciation. Cette fonctionnalité évalue des aspects tels que l'accent, l'intonation, la vitesse de parole et le rythme. Cette fonctionnalité donne un aperçu du naturel et de l'expressivité de votre discours.

L’activation de l’évaluation de la prosodie est facultative. Lorsque vous appelez cette méthode, la valeur du résultat ProsodyScore est renvoyée.
EnableContentAssessmentWithTopic Permet d’activer l’évaluation de contenu. L’évaluation de contenu est la partie de l’évaluation non scriptée pour le scénario d’apprentissage de la langue parlée. En fournissant une description, vous pouvez améliorer la compréhension de l'évaluation du sujet spécifique abordé. Par exemple, en C#, appelez pronunciationAssessmentConfig.EnableContentAssessmentWithTopic("greeting");. Vous pouvez remplacer « salutation » par le texte de votre choix pour décrire un sujet. La description n'a pas de limite de longueur et ne prend actuellement en charge que les paramètres régionaux en-US.

Obtenir des résultats de l’évaluation de la prononciation

Lorsque la parole est reconnue, vous pouvez demander les résultats de l’évaluation de la prononciation en tant qu’objets SDK ou chaîne 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);
}

Les résultats de mots, de syllabes et de phonèmes ne sont pas disponibles à l’aide d’objets SDK avec le SDK Speech pour C++. Les résultats mot, syllabe et phonème sont disponibles uniquement dans la chaîne 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);

Pour savoir comment spécifier la langue d’apprentissage pour l’évaluation de la prononciation dans votre propre application, consultez l’exemple de code.

Pour le développement d'applications Android, les résultats de mots, de syllabes et de phonèmes sont disponibles à l'aide d'objets SDK avec le SDK Speech pour Java. Les résultats sont également disponibles dans la chaîne JSON. Pour le développement d’applications Java Runtime (JRE), les résultats mot, syllabe et phonème sont disponibles uniquement dans la chaîne 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);
},
{});

Pour savoir comment spécifier la langue d’apprentissage pour l’évaluation de la prononciation dans votre propre application, consultez l’exemple de code.

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)

Pour savoir comment spécifier la langue d’apprentissage pour l’évaluation de la prononciation dans votre propre application, consultez l’exemple de code.

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];

Pour savoir comment spécifier la langue d’apprentissage pour l’évaluation de la prononciation dans votre propre application, consultez l’exemple de code.

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)

Paramètres de résultat

Selon que vous utilisez une évaluationscriptée ou nonscriptée, vous pouvez obtenir différents résultats d’évaluation de prononciation. L’évaluation scriptée concerne le scénario d’apprentissage des langues de lecture. L’évaluation non scriptée concerne le scénario d’apprentissage d’une langue parlée.

Remarque

Pour connaître les différences de prix entre les évaluations scriptées et non scriptées, voir Tarification.

Résultats de l’évaluation scriptée

Ce tableau répertorie certains des principaux résultats de l'évaluation de la prononciation pour l'évaluation scénarisée ou le scénario de lecture.

Paramètre Description Granularité
AccuracyScore Précision de prononciation du discours. La précision indique dans quelle mesure les phonèmes correspondent à la prononciation d’un intervenant de langue maternelle. Les scores de précision des syllabes, des mots et du texte intégral sont regroupés à partir du score de précision au niveau du phonème et affinés avec les objectifs d'évaluation. Niveau phonème,
Niveau syllabe (en-US uniquement),
Niveau mot,
Niveau de texte intégral
FluencyScore Fluidité du discours concerné. La fluidité indique dans quelle mesure le discours correspond à l’utilisation qu’un orateur de langue maternelle fait des pauses entre les mots. Niveau de texte intégral
CompletenessScore Intégralité du discours, calculée en fonction du rapport entre les mots prononcés et le texte de référence d’entrée. Niveau de texte intégral
ProsodyScore Prosodie du discours donné. Prosodie indique la nature du discours donné, y compris le stress, l’intonation, la vitesse de parole et le rythme. Niveau de texte intégral
PronScore Score global de la qualité de prononciation du discours donné. PronScore est calculé à partir de AccuracyScore, FluencyScore, CompletenessScore et ProsodyScore avec poids, à condition que ProsodyScore et CompletenessScore soient disponibles. Si l’un ou l’autre n’est pas disponible, PronScore ne sera pas pris en compte. Niveau de texte intégral
ErrorType Cette valeur indique le type d'erreur par rapport au texte de référence. Les options incluent si un mot est omis, inséré ou mal inséré avec un saut. Cela indique également un saut manquant à la ponctuation. Il indique également si un mot est mal prononcé, ou s'il est monotone, ascendant, descendant ou plat dans l'énoncé. Les valeurs possibles sont None pour aucune erreur sur ce mot, Omission, Insertion, Mispronunciation, UnexpectedBreak, MissingBreak, et Monotone. Le type d’erreur peut être Mispronunciation lorsque la prononciation AccuracyScore d’un mot est inférieure à 60. Niveau mot

Résultats d’évaluation nonscriptée

Ce tableau répertorie certains des principaux résultats de l'évaluation de la prononciation pour l'évaluation non scriptée ou le scénario d'expression orale.

Les paramètres VocabularyScore, GrammarScore, et TopicScore sont ajoutés à l'évaluation du contenu combiné.

Remarque

Les évaluations de contenu et de prosodie ne sont disponibles que dans les paramètres régionaux en-US.

Paramètre de réponse Description Granularité
AccuracyScore Précision de prononciation du discours. La précision indique dans quelle mesure les phonèmes correspondent à la prononciation d’un intervenant de langue maternelle. Les scores de précision de syllabe, de mot et de texte intégral sont agrégés à partir du score de précision au niveau du phonème et affinés avec les objectifs d’évaluation. Niveau phonème,
Niveau syllabe (en-US uniquement),
Niveau mot,
Niveau de texte intégral
FluencyScore Fluidité du discours concerné. La fluidité indique dans quelle mesure le discours correspond à l’utilisation qu’un orateur de langue maternelle fait des pauses entre les mots. Niveau de texte intégral
ProsodyScore Prosodie du discours donné. Prosodie indique la nature du discours donné, y compris le stress, l’intonation, la vitesse de parole et le rythme. Niveau de texte intégral
VocabularyScore Maîtrise de l’utilisation lexicale. Évalue l’utilisation efficace des mots par l’orateur et leur pertinence dans le contexte donné pour exprimer des idées avec précision, et le niveau de complexité lexicale. Niveau de texte intégral
GrammarScore Exactitude dans l’utilisation de la grammaire et de la variété des modèles de phrase. L'exactitude lexicale, l'exactitude grammaticale et la diversité des structures de phrases élèvent conjointement les erreurs grammaticales. Niveau de texte intégral
TopicScore Niveau de compréhension et d’engagement avec le sujet, qui fournit des insights sur la capacité de l’orateur à exprimer efficacement ses pensées et ses idées et la capacité à s’engager avec le sujet. Niveau de texte intégral
PronScore Score global de la qualité de prononciation du discours donné. PronScore est calculé à partir de AccuracyScore, FluencyScore et ProsodyScore avec poids, à condition que ProsodyScore soit disponible. Si ProsodyScore n’est pas disponible, PronScore ne considère pas ce score. Niveau de texte intégral
ErrorType Un mot est mal prononcé, mal inséré avec un saut ou il manque un saut au niveau de la ponctuation. Il indique également si une prononciation est monotone ascendante, descendante ou plate sur l'énoncé. Les valeurs possibles sont None pour aucune erreur sur ce mot, Mispronunciation, UnexpectedBreak, MissingBreak, et Monotone. Niveau mot

Le tableau suivant décrit plus en détail l’évaluation de la prosodie :

Champ Description
ProsodyScore Score prosodie de l’énoncé entier.
Feedback Commentaires au niveau des mots, y compris Break et Intonation.
Break
ErrorTypes Types d’erreurs liés aux sauts, notamment UnexpectedBreak et MissingBreak. La version actuelle ne fournit pas le type d'erreur de rupture. Vous devez définir des seuils sur les champs UnexpectedBreak – Confidence et MissingBreak – confidence pour décider s'il y a une pause inattendue ou une pause manquante avant le mot.
UnexpectedBreak Indique un saut inattendu avant le mot.
MissingBreak Indique un saut manquant avant le mot.
Thresholds Les seuils suggérés sur les deux scores de confiance sont de 0,75. Cela signifie que si la valeur deUnexpectedBreak – Confidence est supérieure à 0,75, il y a une cassure inattendue. Si la valeur de MissingBreak – confidence est supérieure à 0,75, il manque une cassure. Bien que 0,75 soit une valeur que nous vous recommandons, il est préférable d’ajuster les seuils en fonction de votre propre scénario. Si vous souhaitez avoir une sensibilité de détection variable sur ces deux cassures, vous pouvez attribuer des seuils différents aux champs UnexpectedBreak - Confidence et MissingBreak - Confidence.
Intonation Indique l’intonation dans la parole.
ErrorTypes Types d’erreurs liés à l’intonation, prenant actuellement en charge uniquement Monotone. Si le Monotone existe dans le champ ErrorTypes, l'énoncé est détecté comme étant monotone. Monotone est détecté sur l’énoncé entier, mais la balise est affectée à tous les mots. Tous les mots dans le même énoncé partagent les mêmes informations de détection monotone.
Monotone Indique la parole monotone.
Thresholds (Monotone Confidence) Les champs Monotone - SyllablePitchDeltaConfidence sont réservés à la détection monotone personnalisée par l'utilisateur. Si vous n'êtes pas satisfait de la décision monotone fournie, ajustez les seuils de ces champs pour personnaliser la détection en fonction de vos préférences.

Exemple de résultat JSON

Les résultats de l’évaluation de prononciation scriptée pour le mot parlé « hello » sont affichés sous forme de chaîne JSON dans l’exemple suivant.

  • L’alphabet du phonème est IPA.
  • Les syllabes sont retournées avec des phonèmes pour le même mot.
  • Vous pouvez utiliser les valeurs Offset et Duration pour aligner les syllabes avec leurs phonèmes correspondants. Par exemple, le décalage de départ (11700000) de la deuxième syllabe loʊ s'aligne sur le troisième phonème, l. Le décalage représente l'heure à laquelle la parole reconnue commence dans le flux audio. La valeur est mesurée en unités de 100 nanosecondes. Pour en savoir plus sur Offset et Duration, consultez Propriétés de réponse.
  • Il y en a cinq NBestPhonemes qui correspondent au nombre de phonèmes parlés demandés.
  • Dans Phonemes, les phonèmes parlés les plus probables était ə au lieu du phonème attendu ɛ. Le phonème attendu ɛ n’a reçu qu’un score de confiance de 47. D’autres correspondances potentielles ont reçu des scores de confiance de 52, 17 et 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
                        }
                    ]
                }
            ]
        }
    ]
}

Vous pouvez obtenir des scores d’évaluation de la prononciation pour :

  • Texte intégral
  • Words
  • Groupes de syllabes
  • Phonèmes au format SAPI ou IPA

Fonctionnalités prises en charge en fonction des paramètres régionaux

Le tableau suivant résume les fonctionnalités prises en charge par les paramètres régionaux. Pour plus de précisions, consultez les sections suivantes. Si les paramètres régionaux dont vous avez besoin ne sont pas répertoriés dans le tableau suivant pour la fonctionnalité prise en charge, remplissez ce formulaire d’admission pour obtenir une aide supplémentaire.

Alphabet phonétique IPA SAPI
Nom du phonème en-US en-US, zh-CN
Groupe de syllabes en-US en-US
Phonème parlé en-US en-US

Groupes de syllabes

L’évaluation de prononciation peut fournir des résultats d’évaluation au niveau de la syllabe. Un mot est généralement prononcé syllabe par syllabe plutôt que phonème par phonème. Le regroupement en syllabes est plus lisible et adapté aux habitudes de parole.

L’évaluation de la prononciation prend en charge les groupes de syllabes uniquement en en-US avec IPA et avec SAPI.

Le tableau suivant compare les exemples de phonèmes aux syllabes correspondantes.

Mot exemple Phonèmes Syllabes
technological teknələdʒɪkl tek·nə·lɑ·dʒɪkl
hello hɛloʊ
luck lʌk lʌk
photosynthesis foʊtəsɪnθəsɪs foʊ·tə·sɪn·θə·sɪs

Pour demander des résultats de niveau syllabe ainsi que des phonèmes, définissez le paramètre de configuration de granularité sur Phoneme.

Format de l’alphabet phonème

L’évaluation de la prononciation prend en charge le nom des phonèmes en en-US avec IPA et en en-US et zh-CN avec SAPI.

Pour les paramètres régionaux prenant en charge le nom du phonème, le nom du phonème est fourni avec la partition. Les noms de phonèmes aident à identifier quels phonèmes ont été prononcés avec précision ou inexactitude. Pour d’autres paramètres régionaux, vous ne pouvez obtenir que le score de phonème.

Le tableau suivant compare les exemples de phonèmes aux syllabes correspondantes.

Mot exemple Phonèmes SAPI Phonèmes IPA
hello h eh low 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

Pour demander des phonèmes IPA, définissez l’alphabet phonème sur IPA. Si vous ne spécifiez pas l’alphabet, les phonèmes sont au format SAPI par défaut.

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"

Évaluer les phonèmes parlés

Avec les phonèmes parlés, vous pouvez obtenir des scores de confiance qui indiquent la probabilité que les phonèmes parlés correspondent aux phonèmes attendus.

L’évaluation de la prononciation prend en charge les phonèmes parlés en en-US avec IPA et avec SAPI.

Par exemple, pour obtenir le son prononcé complet du mot Hello, vous pouvez concaténer le premier phonème prononcé pour chaque phonème attendu avec le score de confiance le plus élevé. Dans le résultat d'évaluation suivant, lorsque vous prononcez le mot hello, les phonèmes IPA attendus sont h ɛ l oʊ. Cependant, les phonèmes réellement parlés sont h ə l oʊ. Vous avez cinq candidats possibles pour chaque phonème attendu dans cet exemple. Le résultat d’évaluation suivant montre que le phonème parlé le plus probable était ə au lieu du phonème ɛattendu. Le phonème attendu ɛ n’a reçu qu’un score de confiance de 47. D’autres correspondances potentielles ont reçu des scores de confiance de 52, 17 et 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
                        }
                    ]
                }
            ]
        }
    ]
}

Pour indiquer si, et le nombre de phonèmes parlés potentiels pour obtenir des scores de confiance, définissez le paramètre NBestPhonemeCount sur une valeur entière telle que 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

Calcul du score de prononciation

Le score de prononciation est calculé en pondérant les scores d’exactitude, de prosodie, de fluidité et d’exhaustivité selon des formules spécifiques pour des scénarios de lecture et de parole.

Lors du tri des scores d’exactitude, de prosodie, de fluidité et d’exhaustivité de faible à élevé (si chaque score est disponible) et en représentant le score le plus bas au score le plus élevé en tant que s0 à s3, le score de prononciation est calculé comme suit :

Pour le scénario de lecture :

  • Avec un score de prosodie : PronScore = 0,4 * s0 + 0,2 * s1 + 0,2 * s2 + 0,2 * s3
  • Sans score de prosodie : PronScore = 0,6 * s0 + 0,2 * s1 + 0,2 * s2

Pour le scénario de parole (le score d’exhaustivité n’est pas applicable) :

  • Avec un score de prosodie : PronScore = 0,6 * s0 + 0,2 * s1 + 0,2 * s2
  • Sans score de prosodie : PronScore = 0,6 * s0 + 0,4 * s1

Cette formule fournit un calcul pondéré basé sur l’importance de chaque score, ce qui garantit une évaluation complète de la prononciation.