2016-12-29 3 views
2

Wie add Array im Spracherkennungsprogramm hinzufügen, siehe unten Code? Ich versuchte verwenden Sie streamRead lesen Sie eine Zeichenfolge und ein Array und hinter commands.Add(new String[] setzen, siehe den Code unten, konnte es aber nicht machen.Wie erstelle ich ein Array aus einer externen Zeichenkette

using System; 
using System.Collections.Generic; 
using System.Threading.Tasks; 
using System.Speech.Recognition; 
using System.Speech.Synthesis; 
using System.Collections.Generic; 
using System.Data; 
using System.Text; 
using System.Globalization; 
using System.IO; 

    //Speech to Text 
     amespace CSharp_Speech_ConsoleApp 

     { 
     class Program 
     { 

     [DllImport("winmm.dll")] 

     public static extern int waveInGetNumDevs(); 

     SpeechRecognitionEngine recognizer = new 
     SpeechRecognitionEngine(new  
     System.Globalization.CultureInfo("en-US")); 

     static void Main(string[] args) 
     { 
     // Make a Keywords array 
     Choices commands = new Choices(); 
     //How to make this array by importing strings from a file ? 
     commands.Add(new String[] { "Good morning.","Hello Mike.", 
     "Good morning Eddy.","Good afternoon.","Good Evening","Hello",   
     "How are you", "Listen to me Mike", "Stop listening Mike!" 
     }); 

      GrammarBuilder gBuilder = new GrammarBuilder(); 

      gBuilder.Append(commands); 
      Grammar grammar = new Grammar(gBuilder); 

      recogEngine.LoadGrammar(grammar); 


     //get total number of sound input devices 

      int waveInDevicesCount = waveInGetNumDevs(); 

      if(waveInDevicesCount == 0) 
     { 
      Console.WriteLine("No microphone detected.!");  

     } 

     else 

    { 
      Console.WriteLine("Microphone detected. "); 

      recogEngine.SetInputToDefaultAudioDevice(); 

      recogEngine.SpeechRecognized += recogEngine_SpeechRecognized; 

      recogEngine.RecognizeAsync(RecognizeMode.Multiple); 

    }  

     Console.ReadLine(); 
     } 
    // Console Display Speech Recognized result Text 
     static void recogEngine_SpeechRecognized(object sender, 
     SpeechRecognizedEventArgs e) 
    { 

     string managedString = e.Result.Text; 

     char[] st = managedString.ToCharArray(); 

     Console.WriteLine(st); 

     } 

     } 

    } 
+0

Was ist der 'Choices' Klasse aussehen ? Hat es wirklich eine 'Add()' Methode, die ein solches String-Array akzeptiert? –

+0

zeigen Sie uns die Daten in Ihrer Datei. – DarkKnight

+0

'File.ReadAllLines' und/oder' String.split' sind, was Sie verwenden möchten – BradleyDotNET

Antwort

3

Wie ein Array zu machen, indem Zeichenfolge aus einer Datei zu importieren?

Dies wird Ihnen alle Zeilen aus einer Datei:

var lines = File.ReadAllLines(@"PathToYourFile"); 

Die oben liest alle Zeilen aus der Datei in den Speicher. Es gibt eine andere Methode, die die Zeilen nacheinander gelesen werden, wie Sie sie brauchen:

var lines = File.ReadLines(@"PathToYourFile"); 

Dieser kehrt IEnumerable<string>. Nehmen wir an, Ihre Datei hat beispielsweise 1000 Zeilen, ReadAllLines liest alle 1000 Zeilen in den Speicher. Aber ReadLines wird sie 1 zu 1 lesen, wie Sie sie brauchen. Deshalb, wenn Sie dies tun:

var lines = File.ReadLines(@"PathToYourFile"); 
var line1 = lines.First(); 
var lastLine = lines.Last(); 

Es wird nur die erste und die letzte Zeile in den Speicher gelesen, auch wenn die Dateien 1000 Zeilen hat.

Also wann die ReadLines Methode zu verwenden?

Lassen Sie uns sagen, dass Sie eine Datei lesen, die 1000 Zeilen hat und die nur Linien, die Sie bei der Lektüre interessiert sind, sind 900-920, dann können Sie dies tun:

var lines = File.ReadLines(@"PathToYourFile"); 
var line900To920 = lines.Skip(899).Take(21); 
+0

Choices commands = new Choices(); commands.Add (new String [] {(Linien)} – Jason

+0

Sorry? Fragen Sie mich etwas? – CodingYoshi

+0

Kann ich Code wie folgt schreiben, Linien verwenden ersetzen alle Zeichenfolgen in {}?: Choices commands = new Choices(); commands.Add (new String [] {(Zeilen)} – Jason

Verwandte Themen