Utiliser l’évaluation de la prononciation

Dans cet article, vous allez apprendre à évaluer la prononciation vocale d’un utilisateur avec la reconnaissance vocale dans le Kit de développement logiciel (SDK) Speech. L’évaluation de la prononciation donne aux orateurs des commentaires sur la précision et la fluidité de leur audio.

Note

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

Disponibilité et tarification

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 la tarification du niveau Standard ou de niveau d’engagement. Si vous achetez un niveau d’engagement pour la transcription vocale, les dépenses pour l’évaluation de la prononciation contribuent à respecter cet engagement. Pour plus d’informations, consultez Tarification.

Streaming et mode continu

L’évaluation de la prononciation prend en charge le mode de diffusion en continu ininterrompu. L’heure 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 savoir comment utiliser l’évaluation de la prononciation en mode streaming dans votre propre application, consultez sample code.

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

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

Pour savoir comment utiliser l’évaluation de la prononciation en mode streaming dans votre propre application, consultez exemple de code ou utilisez Azure Speech dans l'outil Foundry Tools Toolkit.

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

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

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

Si votre fichier audio dépasse 30 secondes, utilisez le mode continu pour le traitement. En mode continu, l’option EnableMiscue n’est pas prise en charge. Pour obtenir les balises Omission et Insertion, vous devez comparer les résultats reconnus avec le texte de référence. Vous trouverez un exemple d’implémentation pour le mode continu sur GitHub sous la fonction PronunciationAssessmentContinuousWithFile.

Si votre fichier audio dépasse 30 secondes, utilisez le mode continu pour le traitement. En mode continu, l’option EnableMiscue n’est pas prise en charge. Pour obtenir les balises Omission et Insertion, vous devez comparer les résultats reconnus avec le texte de référence.

Si votre fichier audio dépasse 30 secondes, utilisez le mode continu pour le traitement. En mode continu, l’option EnableMiscue n’est pas prise en charge. Pour obtenir les balises Omission et Insertion, vous devez comparer les résultats reconnus avec le texte de référence. Vous trouverez un exemple d’implémentation pour le mode continu sur GitHub sous la fonction pronunciationAssessmentContinuousWithFile.

Si votre fichier audio dépasse 30 secondes, utilisez le mode continu pour le traitement. En mode continu, l’option EnableMiscue n’est pas prise en charge. Pour obtenir les balises Omission et Insertion, vous devez comparer les résultats reconnus avec le texte de référence. Vous trouverez un exemple d’implémentation pour le mode continu sur GitHub sous la fonction pronunciation_assessment_continuous_from_file, ou essayez le Azure Speech Toolkit.

Si votre fichier audio dépasse 30 secondes, utilisez le mode continu pour le traitement. En mode continu, l’option EnableMiscue n’est pas prise en charge. Pour obtenir les balises Omission et Insertion, vous devez comparer les résultats reconnus avec le texte de référence. Vous trouverez un exemple d’implémentation pour le mode continu sur GitHub.

Si votre fichier audio dépasse 30 secondes, utilisez le mode continu pour le traitement. En mode continu, l’option EnableMiscue n’est pas prise en charge. Pour obtenir les balises Omission et Insertion, vous devez comparer les résultats reconnus avec le texte de référence. Vous trouverez un exemple d’implémentation pour le mode continu sur GitHub sous la fonction pronunciationAssessFromFile.

Si votre fichier audio dépasse 30 secondes, utilisez le mode continu pour le traitement. En mode continu, l’option EnableMiscue n’est pas prise en charge. Pour obtenir les balises Omission et Insertion, vous devez comparer les résultats reconnus avec le texte de référence. Vous trouverez un exemple d’implémentation pour le mode continu sur GitHub sous la fonction continuousPronunciationAssessment.

Si votre fichier audio dépasse 30 secondes, utilisez le mode continu pour le traitement. Notez que l’évaluation de la prononciation n’est pas prise en charge dans le Kit de développement logiciel (SDK) Speech pour Go. Pour activer cette fonctionnalité, sélectionnez un autre langage de programmation pour votre solution.

Définir les paramètres de configuration

Note

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 de ce guide. Sélectionnez un autre langage de programmation pour votre solution.

Dans le SpeechRecognizer, vous pouvez spécifier la langue à apprendre ou à pratiquer l’amélioration de 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 qui a 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 quelle localité obtient le meilleur score pour votre scénario.

Vous devez créer un PronunciationAssessmentConfig objet. Vous pouvez définir EnableProsodyAssessment pour activer l’évaluation de la prosodie. Pour plus d’informations, consultez les méthodes de configuration.

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

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

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

Le ReferenceText paramètre est facultatif. Définissez le texte de référence si vous souhaitez exécuter une évaluation programmée pour le scénario d'apprentissage de la lecture. Ne définissez pas le texte de référence si vous souhaitez exécuter une évaluation nonscriptée.

Pour connaître les différences de tarification entre l’évaluation scriptée et nonscriptée, consultez Tarification.
GradingSystem Système de point pour l’étalonnage du score. FivePoint donne un score à virgule flottante de 0 à 5. HundredMark donne un score à virgule flottante de 0 à 100. Valeur par défaut : FivePoint.
Granularity Détermine le niveau de granularité d’évaluation le plus bas. Retourne des scores pour les niveaux supérieurs ou égaux à la valeur minimale. Les valeurs acceptées sont Phoneme, qui affiche le score sur le texte intégral, les word, les syllabes et le niveau phonème, Word, qui affiche le score sur le texte intégral et le niveau de word, ou FullText, qui affiche le score au niveau de texte intégral uniquement. Le texte de référence complet fourni peut être un mot, une phrase ou un paragraphe. Cela dépend de votre texte de référence d’entrée. Valeur par défaut : Phoneme.
EnableMiscue Active le calcul des erreurs lorsque les mots prononcés sont comparés au texte de référence. L'activation d'une confusion est facultative. Si cette valeur est True, la ErrorType valeur de résultat peut être définie Omission ou Insertion basée sur la comparaison. Les valeurs sont False et True. Valeur par défaut : False. Pour activer le calcul des erreurs, définissez EnableMiscue sur True. Vous pouvez faire référence à l’extrait de code au-dessus du tableau.
ScenarioId GUID pour un système de points personnalisé.

Méthodes de configuration

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

Note

L’évaluation de la prosodie n’est disponible que dans le paramètre régional fr-FR.

Pour explorer l’évaluation de la prosodie, effectuez une mise à niveau vers le SDK version 1.35.0 ou ultérieure.

Méthode Description
EnableProsodyAssessment Active l'évaluation de la prosodie afin d'évaluer votre prononciation. Cette fonctionnalité évalue les aspects tels que le stress, l’intonation, la vitesse de parole et le rythme. Cette fonctionnalité fournit des insights sur la nature et l’expressivité de votre discours.

L’activation de l’évaluation de la prosodie est facultative. Si cette méthode est appelée, la valeur de résultat ProsodyScore est retournée.

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

Lorsque la reconnaissance vocale 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 lors de l’utilisation des objets SDK avec le Speech SDK pour C++. Les résultats de mot, de syllabe, et de 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 le langage d’apprentissage pour l’évaluation de la prononciation dans votre propre application, consultez sample code.

Pour le développement d’applications Android, les résultats des mots, des syllabes et des 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 Environment (JRE), les résultats pour le mot, la syllabe et le 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 le langage d’apprentissage pour l’évaluation de la prononciation dans votre propre application, consultez sample 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 le langage d’apprentissage pour l’évaluation de la prononciation dans votre propre application, consultez sample 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 le langage d’apprentissage pour l’évaluation de la prononciation dans votre propre application, consultez sample 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 évaluation scriptée ou non scriptée, vous pouvez obtenir différents résultats d’évaluation de prononciation. L’évaluation par script est destinée au scénario d’apprentissage du langage de lecture. L’évaluation nonscriptée concerne le scénario d’apprentissage du langage parlant.

Note

Pour connaître les différences de tarification entre l’évaluation scriptée et nonscriptée, consultez Tarification.

Résultats de l’évaluation scriptée

Ce tableau répertorie certains des résultats clés de l’évaluation de prononciation pour l’évaluation scriptée ou le scénario de lecture.

Paramètre Description Granularité
AccuracyScore Précision de la prononciation du discours. La précision indique la précision selon laquelle les phonèmes correspondent à la prononciation d’un orateur natif. 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émique,
Niveau syllabe (en-US uniquement),
Niveau du mot,
Niveau de texte intégral
FluencyScore La fluidité du discours donné. La fluidité indique dans quelle mesure le discours se rapproche de l'utilisation par un locuteur natif des pauses silencieuses entre les mots. Niveau de texte intégral
CompletenessScore Complétivité de la parole, calculée par le rapport de mots prononcés au texte de référence d’entrée. Niveau de texte intégral
ProsodyScore Prosodie du discours donné. La prosodie indique à quel point le discours donné est naturel, y compris l'accentuation, 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 un poids, à condition que ProsodyScore et CompletenessScore soient disponibles. Si l’un d’eux n’est pas disponible, PronScore ne considère pas ce score. Niveau de texte intégral
ErrorType Cette valeur indique le type d’erreur par rapport au texte de référence. Les options incluent la possibilité qu’un mot soit omis, inséré ou inséré incorrectement avec un saut. Elle indique également une coupure manquante à la ponctuation. Il indique également si un mot est mal prononcé, ou s'il monte de manière monotone, descend, ou reste plat dans l'énoncé. Les valeurs possibles sont None pour indiquer 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 de traitement de texte

Résultats d’évaluation nonscriptés

Ce tableau répertorie certains des résultats clés de l’évaluation de la prononciation pour l’évaluation nonscriptée ou le scénario parlant.

Note

L’évaluation de la prosodie n’est disponible que dans le paramètre régional fr-FR. Pour l’évaluation nonscriptée, le modèle STT (speech-to-text) utilisé est différent de Azure STT. Si vous avez besoin d’une évaluation basée sur du texte reconnu très précis, nous vous recommandons d’appeler d’abord Azure STT pour obtenir le texte de référence, puis d’effectuer une évaluation de script.

Paramètre de réponse Description Granularité
AccuracyScore Précision de la prononciation du discours. La précision indique la précision selon laquelle les phonèmes correspondent à la prononciation d’un orateur natif. Les scores d’exactitude 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 des objectifs d’évaluation. Niveau phonémique,
Niveau syllabe (en-US uniquement),
Niveau du mot,
Niveau de texte intégral
FluencyScore La fluidité du discours donné. La fluidité indique dans quelle mesure le discours se rapproche de l'utilisation par un locuteur natif des pauses silencieuses entre les mots. Niveau de texte intégral
ProsodyScore Prosodie du discours donné. La prosodie indique à quel point le discours donné est naturel, y compris l'accentuation, 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, FluencyScoreet ProsodyScore avec poids, à condition qu’il ProsodyScore soit disponible. Si ProsodyScore ce n’est pas disponible, PronScore ne prend pas en compte ce score. Niveau de texte intégral
ErrorType Un mot est mal prononcé, inséré de manière incorrecte avec une pause, ou manque une pause à la ponctuation. Il indique également si une prononciation est monotoniquement montante, tombant ou plate sur l’énoncé. Les valeurs possibles sont None pour aucune erreur sur ce mot, Mispronunciation, UnexpectedBreak, MissingBreak, et Monotone. Niveau de traitement de texte

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

Champ Description
ProsodyScore Score prosodique de l'énoncé entier.
Feedback Commentaires sur le niveau du mot, y compris Break et Intonation.
Break
ErrorTypes Types d’erreurs liés aux sauts, y compris UnexpectedBreak et MissingBreak. La version actuelle ne prend pas en charge le type d’erreur de rupture. Vous devez définir des seuils sur les champs UnexpectedBreak – Confidence et MissingBreak – confidence pour déterminer s’il existe un saut inattendu ou manquant avant le mot.
UnexpectedBreak Indique une interruption inattendue avant le mot.
MissingBreak Indique un saut de ligne 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 de UnexpectedBreak – Confidence est supérieure à 0,75, elle a un arrêt inattendu. Si la valeur de MissingBreak – confidence est supérieure à 0,75, elle a une rupture manquante. 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 seuils, 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. S’il Monotone existe dans le champ ErrorTypes, l’énoncé est détecté comme monotonique. 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 monotonique.
Thresholds (Monotone Confidence) Les champs Monotone - SyllablePitchDeltaConfidence sont réservés à la détection de monotone personnalisée par l’utilisateur. Si vous n’êtes pas satisfait de la décision monotone fournie, ajustez les seuils sur 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.

  • IPA est l'alphabet phonétique.
  • Les syllabes sont retournées en même temps que les 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 le moment auquel le discours reconnu commence dans le flux audio. La valeur est mesurée en unités de 100 nanosecondes. Pour en savoir plus sur Offset et Durationvoir les propriétés de réponse.
  • NBestPhonemes Cinq correspondent au nombre de phonèmes parlés demandés.
  • Dans Phonemes, les phonèmes parlés les plus probables étaient ə 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 prononciation pour :

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

Fonctionnalités prises en charge par paramètres régionaux

Le tableau suivant récapitule les fonctionnalités prises en charge par les paramètres régionaux. Pour plus d’informations, consultez les sections suivantes.

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 la prononciation peut fournir des résultats d’évaluation au niveau syllabe. Un mot est généralement prononcé syllabe par syllabe plutôt que par phonème par phonème. Le regroupement en syllabes est plus lisible et aligné sur les habitudes de parole.

Les groupes syllabiques sont pris en charge uniquement dans en-US avec l’IPA et le SAPI pour l'évaluation de la prononciation.

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

Exemple de mot Phonèmes Syllabes
Technologique teknələdʒɪkl tek·nə·lɑ·dʒɪkl
Bonjour hɛloʊ
Chance lʌk lʌk
Photosynthèse photosynthèse foʊ·tə·sɪn·θə·sɪs

Pour demander des résultats au niveau des syllabes avec des phonèmes, définissez la granularité du paramètre de configuration sur .

Format d’alphabet de phonèmes

L'évaluation de la prononciation prend en charge le nom du phonème dans en-US avec IPA et dans en-US et zh-CN par SAPI.

Pour les paramètres régionaux qui prennent en charge le nom du phonème, le nom du phonème est fourni avec le score. Les noms phonèmes permettent d’identifier les phonèmes prononcés avec précision ou de manière inexacte. 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 SAPI aux phonèmes IPA correspondants.

Exemple de mot Phonèmes SAPI Phonèmes IPA
Bonjour h eh low h ɛ l oʊ
Chance l ah k l ʌ k
Photosynthèse fow 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 dans en-US utilisant l'API et le SAPI.

Par exemple, pour obtenir le son parlé complet pour le mot Hello, vous pouvez concaténer le premier phonème parlé pour chaque phonème attendu avec le score de confiance le plus élevé. Dans le résultat d’évaluation suivant, lorsque vous parlez le mot hello, les phonèmes IPA attendus sont h ɛ l oʊ. Cependant, les phonèmes parlés réels sont h ə l oʊ. Vous avez cinq candidats possibles pour chaque phonème attendu dans cet exemple. Le résultat de l’évaluation 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 NBestPhonemeCount paramètre 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

Les scores de prononciation sont calculés en fonction de la précision de pondération, de la prosodie, de la fluidité et des scores d’exhaustivité basés sur des formules spécifiques pour la lecture et les scénarios de langage.

Lors du tri des scores de précision, de prosodie, de fluidité et d’exhaustivité de faible à élevé (si chaque score est disponible) et 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 le 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 parlant (le score d’exhaustivité n’est pas applicable) :

  • Avec le 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.

Évaluation du contenu

Important

L’évaluation du contenu (préversion) est supprimée des versions 1.46.0 et ultérieures du SDK Speech. En guise d’alternative, vous pouvez utiliser Azure OpenAI dans Microsoft Modèles Foundry pour obtenir les résultats d’évaluation du contenu, comme décrit dans cette section.

Pour certains discours reconnus, vous pouvez également obtenir des résultats d’évaluation du contenu pour le vocabulaire, la grammaire et la pertinence des rubriques. Vous pouvez utiliser un modèle de conversation tel que Azure OpenAI gpt-4o pour obtenir les résultats de l’évaluation du contenu. Pour plus d’informations sur l’utilisation de modèles de conversation, consultez modèles OpenAI Azure et la documentation de référence de l’API d’inférence de modèle Azure IA chat completions reference documentation.

Les messages utilisateur et système sont utilisés pour définir le contexte du modèle de conversation. Dans l’exemple suivant, le message utilisateur contient l’essai à évaluer et le message système fournit des instructions sur la façon d’évaluer l’essai.

{
  "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]"
    }
  ]
}