2013-08-20 5 views
1

J'utilise avec succès la partie de reconnaissance vocale .NET dans mon application C# pour des choses de base. En plus de cela, est-il possible d'enregistrer l'audio qu'il capte à l'intérieur de mon application en parallèle avec mon application le reconnais- sant. Je veux l'enregistrer pour une date ultérieure afin que je puisse l'analyser. Voulez-vous créer un thread distinct, puis mettre des enregistrements audio .NET lorsque je parle dans le microphone? Je veux seulement les enregistrer dans un répertoire local, au format .wav. Un enregistrement facile comme 48khz et 16 bits. J'utilise une application de forme normale, et c'est le type de code de la parole que j'ai maintenant juste pour vous donner une idée.enregistrer des données audio tout en utilisant la reconnaissance vocale?

using System.Speech.Recognition; 

//then inside the class and namespace I have 
    public partial class Form1 : Form 
    { 
     SpeechRecognitionEngine _recognizer = new SpeechRecognitionEngine(); 


//declared variables here 
//now I initialize 

     public Form1() 
     { 
      InitializeComponent(); 
      _recognizer.SetInputToDefaultAudioDevice(); 
      _recognizer.LoadGrammar(new Grammar(new GrammarBuilder(new Choices(File.ReadAllLines(@"Commands.txt"))))); 
      _recognizer.SpeechRecognized += new EventHandler<SpeechRecognizedEventArgs>(_recognizer_SpeechRecognized); 
      _recognizer.RecognizeAsync(RecognizeMode.Multiple); 
      systemOnline(); 
     } 

void _recognizer_SpeechRecognized(object sender, SpeechRecognizedEventArgs e) 
     { 
      string time = now.GetDateTimeFormats('t')[0]; 
      int ranNum; 
      string speech = e.Result.Text; 
      switch (speech) 
      { 

       //Open Google 
       case "Google": 
       //code opens google in default browser 
+1

il semble qu'il l'enregistre déjà en mémoire, donc tout ce que vous auriez à faire est de l'envoyer à l'emplacement de la mémoire au fichier avant qu'il ne libère cet enregistrement de l'application. Je pense. – Malachi

Répondre

2

Jetez un coup d'œil aux API Windows. Je suis sûr que vous pouvez enregistrer un gestionnaire/gestionnaire d'événement/intercepteur là-bas, pour obtenir les données audio. Consultez le lien suivant: maybe helpfull

+0

Le deuxième dans votre lien, je vais regarder plus. Il semble que je peux l'utiliser comme un événement partagé. Merci :) – camdixon

+0

Recommanderiez-vous de mettre ceci dans un fil séparé? – camdixon

+0

pas sûr, le filetage n'est pas ma zone supérieure, vous devez regarder votre CPU et les fonctionnalités, s'il s'agit d'un multicore et prend en charge plusieurs calculs de données/flux audio sur chaque noyau, alors le filetage sera utile! –