Frage

Ich verwende eine Anwendung zu erstellen, die den Windows-Spracherkennungs-Engine oder die SAPI verwendet. es ist wie ein Spiel für Aussprache , dass es Ihnen ein Tor, wenn man es richtig aussprechen. aber wenn ich Experimente mit SAPI begann, hat es schlechte Anerkennung, es sei denn, wenn Sie eine Grammatik laden auf sie (XML) geben der beste Erkennungsergebnis.

, aber das Problem ist nun am nächsten Aussprache von dem Eingabetext erkennen wird. zum Beispiel:

Datenbank -> dedebase. -> richtig

, auch wenn Sie es falsch aussprechen. es gibt Ihnen die richtigen Antworten.

ohne die Verwendung der XML-Grammatik

, wenn Sie sagen Datenbank geben Sie „in der Basis / die Basis / Datenbank / etc ...“

Geben Sie bitte Ihre Antwort, einen Vorschlag Klarstellung. Stimmen für beste Antwort.

is it possible or not?

durch die Art und Weise verwenden i delphi Compiler auf die Projekte ....

War es hilfreich?

Lösung

Für das, was Sie wollen, ist es wahrscheinlich am besten nicht eine Grammatik zu verwenden. Aber es setzt voraus, dass die Benutzer die „minimal“ Grundausbildung des Spracherkennungs-Engine tun. Es ist nicht sehr lang und relativ angenehm. Und es macht wirklich einen Unterschied auf der Erkennungsgenauigkeit (glauben Sie mir, ich habe einen starken Akzent Französisch in meinem Englisch).
Es kann sogar als Vorübung für das Spiel selbst enthalten sein.
können Sie interessant finden diese Coderage 4 Sitzung auf "Speech Enabling Delphi-Anwendungen (zip)"

Andere Tipps

ich zwei Dinge tun würde:

  1. Konvertieren des ursprünglichen Textes Phoneme unter Verwendung ISpEnginePronunciation :: GetPronunciations .
  2. Verwenden Sie ein Diktat Grammatik und der Aussprache Sprachmodell Kraft SAPI geben Sie eine Reihe von Phonemen zurück - tun dies durch den Aufruf von ISpRecoGrammar :: LoadDictation (L "Aussprache", SPLO_STATIC).
  3. Vergleichen Sie die erkannten Phoneme zu den Ziel Phoneme.

Beachten Sie, dass ISpEnginePronunciation auf SAPI nicht verfügbar ist 5.1, so dass diese auf Vista und Windows 7 beschränkt ist.

Wenn der Punkt des Spiels ist es, den Benutzer zu ermutigen, mit Aussprache zu sprechen, die für eine bestimmte Sprache am nächsten „Standard Aussprache“ ist (zB EN-US), dann wird der Benutzer Zug mit dem Erkenner des Benutzers anzupassen insbesondere (unmodifizierte) Sprachmuster kann kontraproduktiv sein. Sie wäre die Ausbildung der Erkennungsteilweise mehr sein verzeiht der Aussprache Verfehlungen des Benutzers.

Sie Ob Grammatik-basierte am Ende mit Anerkennung oder Diktat basierte Erkennung (Eric Brown Post sieht sehr vielversprechend), werden Sie wahrscheinlich wollen auch Einblick in „Vertrauen“ Partituren. Diese Werte sind verfügbar, nachdem eine Anerkennung durchgeführt wurde, und sie geben einen numerischen Wert, wie sicher der Erkenner ist das, was der Benutzer tatsächlich die dem entspricht, was die Erkennungs denkt der Benutzer gesagt hat. In Abhängigkeit von dem Erkennungs Konfiguration und Anwendungsfall, Konfidenzgrade kann oder auch nicht sinnvoll sein.

Wenn Sie Ihre Genauigkeit Score stützt aus der Textdarstellung des Handys / Phoneme / Aussprache, eine schnelle und einfache Art und Weise eine Genauigkeit Punktzahl zu bekommen wäre Levenshtein Abstand zu verwenden, ein Algorithmus, für die es viele Implementierungen frei verfügbar Im Netz. Ein besserer Scoring-Algorithmus könnte eine Resynchronisation diff sein, mit der Atomeinheit Vergleich einzelne Telefone zu sein.

Hier sind einige Stichworte für MSDN doc Jagd:
ISpRecoResult -> GetPhrase -> SPPHRASE -> Regel -> SPPHRASERULE. -> SREngineConfidence

http://msdn.microsoft. com / en-us / library / ee413319% 28v = VS.85% 29.aspx
http://msdn.microsoft.com/en -US / library / ms720460% 28v = VS.85% 29.aspx

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top