Hallo und herzlich willkommen zu meinem 1. Tutorial.
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".
[Only registered and activated users can see links. Click Here To Register...]#
2.Wähle oben .NET aus und such nach System.Speech.
[Only registered and activated users can see links. Click Here To Register...]
3.Klick auf OK.
2.2
Kommen wir nun zum Code.
Zu Beginn binden wir per using die Namespace ein:
Als nächstes können ziehen wir auf die Form ein Button, eine ListBox und eine RichTextBox.
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:
Nun der Rest
Mit
wird ein Verweis auf die SpeechRecognitionEngine Instanz erstellt.
Es wird das Standard Mikrofon benutzt.
Hier wird die Grammatik geladen, welche letztendlich die Spracheingabe indentifiziert und in einen lesbaren Text umwandelt.
Dieses Event wird ausgelöst, wenn das Programm eine Spracheingabe feststellt.
Dies bedeutet, das nachdem das Programm einen Input bemerkt hat, es nicht aufhört sondern auf die nächsten Spracheingaben wartet.
Kommen wir nun zu dem Event. Dafür fügen wir folgenden Code ein.
In dem Event wird per foreach jedes festgestellte Wort einzeln ausgegeben und der ListBox hinzugefügt.
Alternativ dazu kann man auch den ganzen Satz, den man spricht in einer RichTextBox ausgeben lassen.
Wenn wir nun das Programm starten, auf den Button klicken und in das Mirko reden, sollte der Text entweder in der listBox oder in der RichTextBox erscheinen. Gehen wir nun weiter zu "Text-to-Speech".
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:
Die Form bestücken wir nun mit einem Button und einer "Multiline" Textbox.
Wie eben, zeige ich erstmal den kompletten Code:
Auch hier erstellen wir erst einmal ein Verweis auf die SpeechSynthesizer Instanz:
Zur genaueren Erklärung:
Es wird ein Verweis auf die SpeechSynthesizer Instanz erstellt.
Der aktuelle Standard Lautsprecher wird zum ausgeben des Textes benutzt.
Hier kann die Schnelligkeit eingestellt werden, mit der der Text vorgelesen werden soll.
Dieser Abschnitt sollte weitestgehend selbsterklärend sein, denn hier wird die Lautstärke geregelt.
Es stehen verschiedene Stimmen zur Auswahl. Standardmäßig ist die englische Stimme "Microsoft Anna" eingestellt. Deutsche Stimmen gibt es auch, die müssen allerdings erst installiert werden. Dies ist 4 Post's weiter erklärt ;)
Hier wird "sprecher" der zu lesende Text übergeben. In unserem Fall die Textbox.
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
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".
[Only registered and activated users can see links. Click Here To Register...]#
2.Wähle oben .NET aus und such nach System.Speech.
[Only registered and activated users can see links. Click Here To Register...]
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