Hier werde ich euch zeigen, wie ihr in C# gesprochenen Text in einen schriftlichen Text umwandelt und wie ihr Text vom "vorlesen" lassen könnt.
1.: Was brauchen wir?
2.: "Speech-to-Text"
2.1: Auf die Speech Assembly verweisen
2.2: Code
3.: "Text-to-Speech"
3.1 Code
Abschluss
1.
Visual Studio C#
Mikrofon oder Headset
2.
Bei "Speech-to-Text" wird ein gesprochener Text erkannt und kann dann im Porgramm weiterverarbeitet werden. Im Großen und Ganzen ist das keine besondere Kunst, denn Microsoft hat dafür die Speech.Recognition Funktion mitgeliefert. Dafür müssen wir allerdings zuerst einen Verweis auf die Speech-Assembly erstellen. Dies ist im folgenden Teil 2.1 erklärt.
2.1
Zuerst öffnen wir Visual Studio und erstellen ein neues Windows-Form Projekt.
Das Projekt habe ich einfach mal SpeechTutorial genannt. Nun wird der Verweis folgendermaßen erstellt:
1.Rechtsklick auf das Projekt im Solution Explorer und wählt "Add Reference".
#2.Wähle oben .NET aus und such nach System.Speech.
3.Klick auf OK.
2.2
Kommen wir nun zum Code.
Zu Beginn binden wir per using die Namespace ein:
Code:
using System.Speech.Recognition;
Per Doppelklick auf den Button erstellen wir ein Klick-Event. In das neu hinzugefügte Event kopieren wir zunächst folgenden Code, der später genauer erklärt wird.
Davor erstellen allerdings einen Verweis auf die SpeechRecognitionEngine Instanz. Diese fügen wir so an:
Code:
public Form1()
{
InitializeComponent();
}
private SpeechRecognitionEngine spracherkennung = new SpeechRecognitionEngine();
Code:
spracherkennung.SetInputToDefaultAudioDevice(); spracherkennung.LoadGrammar(new DictationGrammar()); spracherkennung.SpeechRecognized += new EventHandler<SpeechRecognizedEventArgs>(spracherkennung_SpeechRecognized); spracherkennung.RecognizeAsync(RecognizeMode.Multiple);
Code:
SpeechRecognitionEngine spracherkennung = new SpeechRecognitionEngine();
Code:
spracherkennung.SetInputToDefaultAudioDevice();
Code:
spracherkennung.LoadGrammar(new DictationGrammar());
Code:
spracherkennung.SpeechRecognized += new EventHandler<SpeechRecognizedEventArgs>(spracherkennung_SpeechRecognized);
Code:
spracherkennung.RecognizeAsync(RecognizeMode.Multiple);
Kommen wir nun zu dem Event. Dafür fügen wir folgenden Code ein.
Code:
void spracherkennung_SpeechRecognized(object sender, SpeechRecognizedEventArgs e)
{
foreach (RecognizedWordUnit wort in e.Result.Words)
{
listBox1.Items.Add(wort.Text);
}
}
Alternativ dazu kann man auch den ganzen Satz, den man spricht in einer RichTextBox ausgeben lassen.
Code:
richTextBox1.AppendText("\r\n" + e.Result.Text);
3
Die Funktion Speech.Synthesis ermöglicht es uns, dem Programm einen Text zu geben, den er dann "vorliest".
3.1
Zu Beginn erstellen wir ein neues Projekt. Wir wiederholen Schritt 2.1 und binden die Namespace ein, diesmal allerdings mit:
Code:
using System.Speech.Synthesis;
Wie eben, zeige ich erstmal den kompletten Code:
Auch hier erstellen wir erst einmal ein Verweis auf die SpeechSynthesizer Instanz:
Code:
public Form1()
{
InitializeComponent();
}
private SpeechSynthesizer speaker = new SpeechSynthesizer();
Code:
sprecher.SetOutputToDefaultAudioDevice();
sprecher.Rate = -1;
sprecher.Volume = 100;
sprecher.SelectVoice("Microsoft Anna");
sprecher.SpeakAsync(textBox1.Text);
Zur genaueren Erklärung:
Code:
SpeechSynthesizer sprecher = new SpeechSynthesizer();
Code:
sprecher.SetOutputToDefaultAudioDevice();
Code:
sprecher.Rate = -1;
Code:
sprecher.Volume = 100;
Code:
sprecher.SelectVoice("Microsoft Anna");
Code:
sprecher.SpeakAsync(textBox1.Text);
Die Text-zu-Sprach Funktion ist nun fertig und kann getestet werden.
(Am besten einen englischen Text, denn wenn man einen deutschen von einer englischen Stimme vorlesen lässt, hört sich das ein wenig komisch an.)
Abschluss
Jetzt kann man das Ganze natürlich beliebig weit ausbauen und z.B. eine Sprachsteuerung für den Computer entwickeln. Doch das ist jetzt euch überlassen
Nun sind wir auch schon am Ende des Tutorials angelangt. Ich hoffe es war verständlich, auch wenn es mein 1. Tutorial war.
aera12







