Register for your free account! | Forgot your password?

Go Back   elitepvpers > Coders Den > General Coding > Coding Tutorials
You last visited: Today at 06:39

  • Please register to post and access all features, it's quick, easy and FREE!

Advertisement



[C#][TUTORIAL] Text-to-Speech und Speech-to-Text(Spracherkennung)

Discussion on [C#][TUTORIAL] Text-to-Speech und Speech-to-Text(Spracherkennung) within the Coding Tutorials forum part of the General Coding category.

Reply
 
Old   #1
 
eXtreme''s Avatar
 
elite*gold: 0
Join Date: Apr 2010
Posts: 452
Received Thanks: 20
[C#][TUTORIAL] Text-to-Speech und Speech-to-Text(Spracherkennung)

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".

#

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;
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:

Code:
 public Form1()
        {
            InitializeComponent();
        }
        private SpeechRecognitionEngine spracherkennung = new SpeechRecognitionEngine();
Nun der Rest

Code:
spracherkennung.SetInputToDefaultAudioDevice();
spracherkennung.LoadGrammar(new DictationGrammar());
spracherkennung.SpeechRecognized += new EventHandler<SpeechRecognizedEventArgs>(spracherkennung_SpeechRecognized);
spracherkennung.RecognizeAsync(RecognizeMode.Multiple);
Mit
Code:
SpeechRecognitionEngine spracherkennung = new SpeechRecognitionEngine();
wird ein Verweis auf die SpeechRecognitionEngine Instanz erstellt.

Code:
spracherkennung.SetInputToDefaultAudioDevice();
Es wird das Standard Mikrofon benutzt.

Code:
spracherkennung.LoadGrammar(new DictationGrammar());
Hier wird die Grammatik geladen, welche letztendlich die Spracheingabe indentifiziert und in einen lesbaren Text umwandelt.

Code:
spracherkennung.SpeechRecognized += new EventHandler<SpeechRecognizedEventArgs>(spracherkennung_SpeechRecognized);
Dieses Event wird ausgelöst, wenn das Programm eine Spracheingabe feststellt.

Code:
spracherkennung.RecognizeAsync(RecognizeMode.Multiple);
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.

Code:
void spracherkennung_SpeechRecognized(object sender, SpeechRecognizedEventArgs e)
        {
            foreach (RecognizedWordUnit wort in e.Result.Words)
            {
                listBox1.Items.Add(wort.Text);
            }
        }
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.

Code:
richTextBox1.AppendText("\r\n" + e.Result.Text);
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:

Code:
using System.Speech.Synthesis;
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:
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();
Es wird ein Verweis auf die SpeechSynthesizer Instanz erstellt.

Code:
sprecher.SetOutputToDefaultAudioDevice();
Der aktuelle Standard Lautsprecher wird zum ausgeben des Textes benutzt.

Code:
sprecher.Rate = -1;
Hier kann die Schnelligkeit eingestellt werden, mit der der Text vorgelesen werden soll.

Code:
sprecher.Volume = 100;
Dieser Abschnitt sollte weitestgehend selbsterklärend sein, denn hier wird die Lautstärke geregelt.

Code:
sprecher.SelectVoice("Microsoft Anna");
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

Code:
sprecher.SpeakAsync(textBox1.Text);
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
eXtreme' is offline  
Thanks
3 Users
Old 04/18/2012, 16:42   #2
 
elite*gold: 0
Join Date: Apr 2012
Posts: 83
Received Thanks: 13
Sieht gut aus
Dev5 is offline  
Old 04/19/2012, 19:51   #3
 
V8II's Avatar
 
elite*gold: 0
Join Date: Jul 2010
Posts: 475
Received Thanks: 130
Genial! Die Spracherkennung hat nur leiche Mängel ^^ Aus "Elitepvpers" macht er "gelegentlich Operas" und so weiter.
'text to speech" redet immer nur auf Englisch oder? Gibts das auch auf deutsch? Ist aber ganz amüsant wie manches ausgesprochen wird

Edit: Du solltest nicht bei jedem Klick-Event einen neuen SpeechSynthesizer erstellen ... eine einmalige erstellung währe besser
V8II is offline  
Old 04/19/2012, 19:59   #4
 
Kentazo's Avatar
 
elite*gold: 0
Join Date: Apr 2012
Posts: 12
Received Thanks: 9
Nicht schlecht
Danke dir.
Kentazo is offline  
Old 04/19/2012, 22:11   #5
 
eXtreme''s Avatar
 
elite*gold: 0
Join Date: Apr 2010
Posts: 452
Received Thanks: 20
Quote:
Originally Posted by V8II View Post
Genial! Die Spracherkennung hat nur leiche Mängel ^^ Aus "Elitepvpers" macht er "gelegentlich Operas" und so weiter.
'text to speech" redet immer nur auf Englisch oder? Gibts das auch auf deutsch? Ist aber ganz amüsant wie manches ausgesprochen wird

Edit: Du solltest nicht bei jedem Klick-Event einen neuen SpeechSynthesizer erstellen ... eine einmalige erstellung währe besser
Danke, du hast Recht. Ich setzt mich direkt dran und verbesser es.

Quote:
Originally Posted by Kentazo
Nicht schlecht
Danke dir.
Dank dir fürs Feedback

Doch nun zu dem Sprachpaket auf Deutsch!



Wie kann man denn nun die "Ausgabe-Sprache" auf Deutsch stellen?
Ganz einfach:
1. Besucht diesen Link:



Installiert die Datei einfach.

2. Besucht diesen Link:



Installiert auch diese Datei.

Danach sollten euch "LH Anna" und "LH Stefan" als Deutsche Sprachpakete zu Seite stehen.
Das ganze könnt ihr folgendermaßen im Code festlegen:
Ihr ändert einfach die Zeile
Code:
sprecher.SelectVoice("Microsoft Anna");
für eine männliche Stimme durch

Code:
sprecher.SelectVoice("LH Stefan");
oder für eine weibliche Stimme durch
Code:
sprecher.SelectVoice("LH Anna");
Das ganze sollte dann auf Deutsch sein.

aera12
eXtreme' is offline  
Thanks
1 User
Old 04/20/2012, 16:05   #6
 
V8II's Avatar
 
elite*gold: 0
Join Date: Jul 2010
Posts: 475
Received Thanks: 130
Cool!
Weißt du ob es eine Möglichkeit gibt, die Deutschen Sprachpakte mit C# mitzuliefern / automatisch zu installieren? Ich möchte meine Programmnutzer nicht mit zu vielen Downloads quälen ...

Edit: Danke für die PN!
V8II is offline  
Reply


Similar Threads Similar Threads
[B] Speech Box
04/04/2012 - elite*gold Trading - 0 Replies
Ihr schreibt euren text rein dann spricht die frau aus was ihr geschrieben habt :P ImageShack&#174; - Online Photo and Video Hosting Hier die Truhen : No permission No permission
Suche PC-Sprachsoftware (Text-to-Speech-Engine)
03/28/2012 - Off Topic - 4 Replies
Hey, wie der Titel schon sagt, suche ich eine PC-Sprachsoftware, mit guter Qualität und keine 0815-Sprachausgabe, inder man einen Text (deutsch - nicht auf englisch) eingeben kann und dieser dann vom PC aus vorgelesen wird. Es wäre noch gut, wenn man den vorgelesenen Text als MP3-Datei speichern kann. Mir egal, ob das Programm nun eine Freeware oder 'ne Demo ist oder nur im Web abgespielt werden kann. Ich freue mich auf Antworten, .Rage'
Free Text-to-Speech (TTS) Software
05/23/2011 - Off Topic - 0 Replies
Ich bin auf der Suche nach einer kostenlosen Text-to-Speech (TTS) Software und habe auch schon gegoogelt und bin auch fündig geworden. Aber die meisten habe so eine schlechte Ausgabequalität und die Stimme lässt auch zu wünschen übrig. Ich bin auch eine recht gute Software gestoßen (Free text to speech software with Natural Voices-- Free NaturalReader). Auf der Homepage kann man auch kostenlos Probehören. Die Stimme Klaus/Reiner sind echt TOP, nur leider sind diese Stimmen in der kostenlosen...



All times are GMT +1. The time now is 06:39.


Powered by vBulletin®
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
SEO by vBSEO ©2011, Crawlability, Inc.
This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.

Support | Contact Us | FAQ | Advertising | Privacy Policy | Terms of Service | Abuse
Copyright ©2025 elitepvpers All Rights Reserved.