31.10.2012 Aufrufe

DIPLOMARBEIT

DIPLOMARBEIT

DIPLOMARBEIT

MEHR ANZEIGEN
WENIGER ANZEIGEN

Erfolgreiche ePaper selbst erstellen

Machen Sie aus Ihren PDF Publikationen ein blätterbares Flipbook mit unserer einzigartigen Google optimierten e-Paper Software.

3.4 Verbinden der Komponenten<br />

3.4.1.1.3 Datenfluss Sprachserver<br />

Nachdem der Weg der Daten im VoIP‐Client bekannt ist, muss untersucht werden, wie der Sprach‐<br />

server die Audiodaten bezieht. Für die Spracherkennung ist die Klasse Recognizer zuständig. In<br />

der Methode recognize() findet man folgende Zeile:<br />

boolean response = wgd.isUtt(timeout);<br />

Hier wird der Wortgrenzendetektor angewiesen, eine Äußerung aufzuzeichnen. Wie schon bei der<br />

Beschreibung der Komponenten erwähnt, ist es auch die Aufgabe der Klasse WGD, die Audiodaten zu<br />

beziehen.<br />

Die Aufzeichnung wird in der Methode isUtt() der Klasse WGD durch folgenden Aufruf eingeleitet:<br />

jaudio.startRecording();<br />

Mit Hilfe der Methode readSamples()der Klasse JAudio können später Audiodaten gelesen<br />

werden:<br />

buff = jaudio.readSamples();<br />

Die Aufgabe wird hier an die Klasse JAudio weitergereicht. In deren Konstruktor befinden sich diese<br />

Anweisungen:<br />

audioFormat = new AudioFormat(sampleRate, 16, 1, true, true);<br />

DataLine.Info info = new DataLine.Info( TargetDataLine.class,<br />

audioFormat);<br />

[…]<br />

line = (TargetDataLine) AudioSystem.getLine( info );<br />

line.open( audioFormat );<br />

Hier wird die Hardware für die Audioeingabe angesprochen, d. h. der Audioeingang wird geöffnet.<br />

Die Klasse TargetDataLine ist das Gegenstück zu SourceDataLine. Die Referenz auf eine<br />

Instanz von TargetDataLine wird wieder von der Klasse AudioSystem bereitgestellt. Ebenso<br />

wird ein Format übergeben, in dem später die Audiodaten zur Verfügung stehen.<br />

In der Methode readSamples() können anschließend Daten von der Audioquelle gelesen:<br />

numBytesRead = line.read(data, 0, data.length);<br />

Die Variable data ist hier ein Byte‐Array in dem die gelesenen Daten abgespeichert werden.<br />

Damit ist auch bekannt, wie der Sprachserver die Audiodaten bezieht.<br />

3.4.1.2 Umleitung der Daten<br />

3.4.1.2.1 Konzept<br />

Da nun die Datenquelle sowie die neue Datensenke bekannt sind, müssen Überlegungen dazu anges‐<br />

tellt werden, wie man die Daten am besten dorthin umleitet. Eine Möglichkeit wäre, die Klasse<br />

JAudio direkt von dem PipedInputStream aus der Klasse AudioOutputStream lesen zu<br />

63

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!