Unter Mac OS X gibt es in der API die Klassen NSSpeechSynthesizer und NSSpeechRecognizer. Während die eine Klasse dazu dient Text auszugeben, kann die andere Klasse dazu genutzt werden Sprache zu erkennen. Der NSSpeechSynthesizer kann unter Mono einfach genutzt werden:
var synthesizer=new NSSpeechSynthesizer(); synthesizer.StartSpeakingString("Hallo Welt.");
Schwieriger wird das ganze bei der Klasse NSSpeechRecognizer. Mit Hilfe dieser Klasse ist es möglich auf bestimmte Kommandos zu reagieren. Im ersten Moment muss die Klasse angelegt werden und einige Optionen gesetzt werden:
var recognizer=new NSSpeechRecognizer(); string[] cmds=new string[] {"Computer"}; recognizer.Commands=cmds; recognizer.BlocksOtherRecognizers=false; recognizer.DisplayedCommandsTitle="RecognizerTest"; recognizer.Delegate=new RecognizerDelegate(); recognizer.ListensInForegroundOnly=false; recognizer.StartListening();
Wenn nun das Kommando Computer erkannt wird, wird die Instanz vom RecognizerDelegate angerufen. Das Delegate sieht dabei wie folgt aus:
public class RecognizerDelegate : NSSpeechRecognizerDelegate { public override void DidRecognizeCommand(NSSpeechRecognizer sender, string command) { //Do something } }
Im Delegate selbst gibt es die Methode DidRecognizeCommand welche als Parameter das erkannte Kommando enthält.