Question

J'utilise pour créer une application qui utilise les fenêtres moteur de reconnaissance vocale ou la SAPI. est comme un jeu pour Prononciation qu'il vous donne marquer quand vous prononcez correctement. mais quand j'ai commencé des expériences avec SAPI, il a une mauvaise reconnaissance à moins que si vous chargez une grammaire sur elle (XML) le donner le meilleur résultat de reconnaissance.

mais le problème est maintenant le plus proche prononciation du texte d'entrée sera reconnu. par exemple:

Base de données -> dedebase -.> Correcte

même si vous écorché il. il vous donne des réponses correctes.

sans utiliser la grammaire XML

quand vous dites la base de données, il vous donne "dans la base / la base / base de données / etc ..."

S'il vous plaît poster votre réponse, suggestion, des éclaircissements. vote pour la meilleure réponse.

is it possible or not?

par la façon dont j'utilise le compilateur delphi sur les projets ....

Était-ce utile?

La solution

Pour ce que vous voulez, il est probablement préférable de ne pas utiliser une grammaire. Mais il faut que les utilisateurs font la formation de base « minimale » du moteur de reconnaissance vocale. Ce n'est pas très long et relativement agréable. Et cela fait vraiment une différence sur la précision de la reconnaissance (croyez-moi, j'ai un fort accent français dans mon anglais).
Il peut même être inclus comme une pratique préliminaire pour le jeu lui-même.
Vous trouverez peut-être intéressant de voir ce CodeRage 4 séance sur "Applications Delphi Discours Activation (zip)"

Autres conseils

Je ferais deux choses:

  1. Convertir le texte original en utilisant ISpEnginePronunciation :: GetPronunciations .
  2. Utiliser une grammaire de dictée et le modèle de langage de prononciation de SAPI force de vous rendre un ensemble de phonèmes - faire en appelant ISpRecoGrammar :: LoadDictation (L "Prononciation", SPLO_STATIC).
  3. Comparez les phonèmes reconnus aux phonèmes cibles.

Notez que ISpEnginePronunciation ne sont pas disponibles sur SAPI 5.1, c'est donc limité à Vista et Windows 7.

Si le point du jeu est d'encourager l'utilisateur à parler en utilisant la prononciation qui est le plus proche de « prononciation standard » pour une langue donnée (par exemple EN-US), puis d'avoir le train d'utilisateur le reconnaisseur de s'adapter à particulier de l'utilisateur (non modifiée) des modèles de discours peuvent être contre-productif. Vous être en partie la formation de la reconnaissance à être plus indulgent des défaillances de prononciation de l'utilisateur.

Que vous finissez à l'aide de la reconnaissance en tant que grammaire ou la reconnaissance basée dictée (regards de poste Eric Brown promet très), vous voudrez probablement aussi de se pencher sur des scores « de confiance ». Ces scores sont disponibles après une reconnaissance a été effectuée, et ils donnent une valeur numérique à la confiance que la reconnaissance est que ce que l'utilisateur a fait correspond à ce que l'utilisateur pense que l'reconnaisseur dit. Selon le cas de configuration et l'utilisation de reconnaissance, les scores de confiance peut ou peut ne pas être significative.

Si vous basez votre pointage de précision hors de la représentation textuelle des téléphones / phonèmes / prononciation, un moyen rapide et facile d'obtenir un score de précision serait d'utiliser la distance Levenshtein, un algorithme pour lequel il existe de nombreuses implémentations librement disponibles sur le net. Un meilleur algorithme de notation pourrait être une diff resynchronisation, avec l'unité atomique de comparaison étant un téléphone unique.

Voici quelques mots-clés pour la chasse doc MSDN:
ISpRecoResult -> GetPhrase -> SPPHRASE -> Règle -> SPPHRASERULE -.> SREngineConfidence

http://msdn.microsoft. com / fr-fr / bibliothèque / ee413319% = 28V vs.85% 29.aspx
http://msdn.microsoft.com/en -nous / bibliothèque / ms720460% 28V = VS.85% 29.aspx

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top