Akustik-training mit SAPI Speech API 5.3
Microsoft SAPI 5.3 Speech API auf Vista, wie Sie programmgesteuert tun akustisches Modell der Ausbildung eines RecoProfile? Mehr konkret, wenn Sie eine text-Datei und eine audio-Datei von einem user zu sprechen, dass Texte, welche Reihenfolge von SAPI Anrufe würden Sie machen, zu trainieren, das Profil des Benutzers, mit text-und audio -?
Update:
Weitere Informationen zu diesem problem habe ich noch nicht gelöst:
Rufen Sie ISpRecognizer2.SetTrainingState( TRUE, TRUE ) auf "Anfang" und ISpRecognizer2.SetTrainingState( FALSE, TRUE ) in "das Ende." Aber es ist noch unklar, nur, wenn solche Aktionen passieren im Verhältnis zu anderen Aktionen.
Zum Beispiel, haben Sie, um die verschiedenen Aufrufe zur Einrichtung einer Grammatik, mit der text, der passt Ihre audio-und andere Anrufe, um hook up das audio-und andere Anrufe, um verschiedene Objekte zu sagen: "du bist gut zu gehen." Aber was sind die Interdependenzen -- was muss passieren, bevor was anderes? Und wenn Sie eine audio-Datei statt in der system-Mikrofon-Eingang, macht das das relative timing weniger vergeben, weil die Erkennung ist nicht zu halten, dort zu sitzen, zuzuhören, bis die Lautsprecher richtig?
- Verknüpft ist eine gute Quelle des Wissens für alles, was SAPI Ausbildung im Zusammenhang, sobald Sie beginnen, schmutzig zu werden in den code: Siehe auch die Frage verknüpft. Und die Ausbildung muss in C++ geschrieben. Der C# - interfaces nicht alles, was Sie brauchen, um diese Aufgabe zu erfüllen: stackoverflow.com/questions/9760262/...
Du musst angemeldet sein, um einen Kommentar abzugeben.
Umsetzung SAPI training ist relativ hart, und die Dokumentation nicht wirklich sagen, was Sie wissen müssen.
ISpRecognizer2::SetTrainingState wechselt der recognizer in-oder out-of-training-Modus.
Wenn Sie in den Modus training, all das wirklich geschieht, ist, dass die Erkennung gibt der Benutzer eine Menge mehr Spielraum, über die Anerkennungen. So, wenn Sie versuchen zu erkennen, ein Satz, der Motor wird viel weniger streng über die Anerkennung.
Dem Motor nicht wirklich eine Anpassung, bis Sie verlassen Sie den training-Modus, und Sie haben den fAdaptFromTrainingData Flagge.
Wenn der Motor passt, scannt er die Ausbildung audio gespeichert unter der Profil-Daten. Es ist die Ausbildung von code Verantwortung für die Erarbeitung neuer audio-Dateien, in denen die engine kann es finden für die Anpassung.
Diese Dateien müssen auch gekennzeichnet werden, damit der Motor weiß, was gesagt wurde.
So, wie tun Sie dies? Sie verwenden müssen, drei weniger bekannten SAPI-APIs. Insbesondere benötigen Sie, um das Profil token mit ISpRecognizer::GetObjectToken, und SpObjectToken::GetStorageFileName richtig nach der Datei zu suchen.
Schließlich müssen Sie auch verwenden ISpTranscript zu generieren ordnungsgemäß beschriftet mit audio-Dateien.
Setzen Sie alle zusammen, müssen Sie Folgendes machen (pseudo-code):
Erstellen Sie einen inproc-Erkennung & binden Sie den entsprechenden audio-Eingang.
Sicherzustellen, dass Sie die Beibehaltung der audio-für Ihren Auszeichnungen; Sie werden es später benötigen.
Erstellen Sie eine Grammatik, die den text enthält, zu trainieren.
Satz der Grammatik ist-Zustand zum pause-die Erkennung, wenn eine Anerkennung erfolgt. (Dies hilft bei der Ausbildung von einer audio-Datei, wie gut.)
Wenn eine Anerkennung erfolgt:
Holen Sie sich den erkannten text und beibehaltene audio.
Erstellen Sie ein stream-Objekt mit CoCreateInstance(CLSID_SpStream).
Erstellen Sie eine Ausbildung audio-Datei mit ISpRecognizer::GetObjectToken, und ISpObjectToken::GetStorageFileName , und binden Sie es, um den stream (mit ISpStream::BindToFile).
Kopieren Sie den beibehalten-audio in den stream-Objekt.
QI das stream-Objekt für die ISpTranscript - Schnittstelle, und verwenden Sie ISpTranscript::AppendTranscript hinzufügen, um den erkannten text an den stream.
Update der Grammatik für die nächste äußerung, wieder die Erkennung, und wiederholen Sie, bis Sie nicht trainieren text.