J'utilise le Par exemple, si vous appuyez sur les doigts, appuyez sur la table ou déplacez ma chaise, il choisit comme un discours. P> Pourquoi dans la dose du monde Il reconnaît le bruit de fond comme discours. P> me frapper ma dose de doigts ne sonne pas la même chose que moi disant "Notepad" !!! P> Voici le code P> SpeechSrecognengine code> dans mon programme. Le problème est qu'il reconnaît le bruit de fond comme point de parole.
using System;
using System.Threading;
using System.Speech;
using System.Speech.Synthesis;
using System.Speech.Recognition;
namespace SpeachTest
{
public class MainClass
{
static void Main()
{
MainClass main = new MainClass();
SpeechRecognitionEngine sre = new SpeechRecognitionEngine(new System.Globalization.CultureInfo("en-US"));
Choices choiceList = new Choices();
choiceList.Add(new string[]{"Open", "Close", "Then", "Volume", "Up", "Firefox", "Notepad", "Steam","turn", "the", "now" } );
GrammarBuilder builder = new GrammarBuilder();
builder.Append(choiceList);
Grammar grammar = new Grammar(new GrammarBuilder(builder,0, 10) );
sre.SpeechRecognized += main.sreRecognizedEvent;
sre.SpeechDetected += main.sreDetectEvent;
sre.SpeechRecognitionRejected += main.sreRejectEvent;
sre.RecognizeCompleted += main.sreCompleteEvent;
sre.InitialSilenceTimeout = TimeSpan.FromSeconds(0);
sre.BabbleTimeout = TimeSpan.FromSeconds(0);
sre.EndSilenceTimeout = TimeSpan.FromSeconds(0);
sre.EndSilenceTimeoutAmbiguous = TimeSpan.FromSeconds(0);
sre.SetInputToDefaultAudioDevice();
sre.LoadGrammar(grammar);
while(true){
sre.Recognize();
}
}
void sreRecognizedEvent(Object sender, SpeechRecognizedEventArgs e){
Console.Write("Reconized ~ " + e.Result.Text + " ~ with confidence " + e.Result.Confidence);
Console.WriteLine();
}
void sreDetectEvent(Object sender, SpeechDetectedEventArgs e){
Console.WriteLine("Detected some type of input");
}
void sreRejectEvent(Object sender, SpeechRecognitionRejectedEventArgs e){
Console.WriteLine("Rejected Input ~ " + e.Result.Text) ;
}
void sreCompleteEvent(Object sender, System.Speech.Recognition.RecognizeCompletedEventArgs e){
Console.WriteLine("Completed Recongnization");
}
}
}
3 Réponses :
Éviter les algorithmes de filtrage, vous pouvez vérifier le confiance propriété que vous présentez pour le moment. Il varie entre 0,0 code> et
1.0 code> où 1 est très confiant. Je trouve
0,7 code> fonctionne bien mais vous pouvez vous déconner avec essai et erreur.
void sreRecognizedEvent(Object sender, SpeechRecognizedEventArgs e)
{
if(e.Result.Confidence >= 0.7)
{
Console.Write("Reconized ~ " + e.Result.Text + " ~ with confidence " + e.Result.Confidence);
Console.WriteLine();
}
}
J'ai déjà essayé ça. La plupart du temps, il reconnaît mon dit un mot et un bruit de fond avec à peu près la même confiance. Environ 0,90 à 0,95.
Vérifiez que vos paramètres de microphone sont corrects sur votre système. Vous pouvez avoir trop sensible.
Oui. Développer mes microphones La sensibilité a montré une amélioration majeure de la précision. C'était à 100 ans, mais je l'ai maintenant refusé jusqu'à 20. Il reste encore parfois de faux positifs (toujours très irritant, mais cela fera pour l'instant)
éteint ma sensibilité à la microphone était trop élevée. Très, très élevé d'être exact. C'était à 100 ans, ce qui signifie qu'il ramasserait les plus petits sons (tels que le bruit de fond). p>
Je suppose que ces petits sons seraient amplifiés à un degré aussi élevé que le Transformer la sensibilité à environ 20 ou 30 ans. SpeechRecOntitionEngine Code> aurait de la difficulté à différencier son discours. P>
p>
Quoi et à quel point les sons de non-propre sont rejetés par un reconnaissance varie considérablement de reconnaissant à reconnaître. Mon expérience avec Microsoft Recognizer est qu'il essaie très fort de trouver des mots. Par exemple, avec Dragondict ou Google Web Reconnaissance, vous pouvez classer vos doigts ou votre toux et ils sont rejetés. De plus, le reconnaissance Microsoft suit de manière agressive le niveau audio, de sorte que s'il écoute beaucoup de silence, il simulera à l'intérieur de l'augmentation de l'augmentation du gain en mettant à l'échelle des seuils de détection. (J'ai vécu qu'il reconnaissait le bruissement des papiers ou le son de la climatisation en tant que discours humain.) P>
Une solution que j'ai utilisée pendant de nombreuses années avec un grand succès est un peu intuitif. Vous devez ajouter votre propre modèle de parole "ordures". Puisque vous utilisez simplement une liste de mots et non une grammaire sophistiquée, cela devrait bien fonctionner et être facile à faire. P>
Vous écoutez actuellement: "Ouvrir", "Fermer", "Alors", "Volume", "Up", "Firefox", "Notepad", "Steam", "Turn", "Turn", "Maintenant" P>
Vous devez ajouter à la liste (que vous écoutez) certains mots qui sont quelque peu (mais Résumer: Reconnaître cette liste plus longue des mots, mais agissez-les uniquement s'il s'agit de votre liste de commandes. Si vous utilisez une instruction CASE dans votre code, cela est absurdement simple, seule une branche sur vos commandes. Sinon, vous devez tester la "bonne" liste. P>
Remarque: cette technique fonctionne également lorsque vous faites une reconnaissance plus complexe en utilisant une grammaire de reconnaissance vocale. Vous venez de mettre toutes ces phrases «ordures» sous une règle de grammaire nommée «ordures» et vous pouvez rejeter tout énoncé reconnu par cette règle. P>
Lire les docs, on dirait que vous voudrez peut-être regarder les propriétés BabbletimeTemeTemeTimeout, FinleLeCeTimeTeTimeOut et Dormir en fin de compte?
Vient de mettre à jour le code et ajouté tous ces biens définis sur 0. n'a rien changé
@Jackbarn pourquoi avez-vous essayé 0 pour
babbletitimeout code>? Je n'ai pas vérifié les autres, mais pour
babbletitimeout code> 0 est la valeur par défaut. Que se passera-t-il pour des valeurs environ quelques secondes?
@Sam je l'ai défini sur TI 0 pour exclure les poisiblites. Moi changer sa valeur n'a rien fait.
Je soupçonne que le "discours" rapporté reçoit un score de confiance vraiment faible dans ce cas. Un faible résultat de confiance est un problème comme si vous écoutez de près pour des voix possibles en statique; Si vous écoutez assez fort, vous pourriez trouver quelque chose qui semble vaguement comme la parole, mais vous ne parieriez probablement pas dessus.
@Danbryant non, cela reconnaît en fait et l'hypothèse avec un score de confiance très élevé