Ogg Speex oder einfach nur Speex ist ein offener, freier Audiokomprimierungscodec, der speziell für Sprache optimiert ist. Oder wie es auf der Homepage so schön formuliert ist: "ein freier Codec für freie Rede". Im Gegensatz zu OggVorbis ist Speex auch für Aufnahmen mit sehr geringer Qualität (weniger Bit pro Sekunde) ausgelegt.
Dieser Codec wird zum Beispiel in Programmen zur Internet-Telefonie (VoiceOverIp) eingesetzt. LinPhone, OpenH323 und GnomeMeeting sind Programme, in denen Speex verwendet wird.
Man kann Speex aber auch zur platzsparenden Archivierung von Sprachaufnahmen verwenden, oder um Programme mit Sprachausgabe zu versehen. Darauf geht dieser Artikel später genauer ein.
Der "Ogg"-Container wird nur bei der Speicherung als Datei verwendet.
Homepage: http://www.speex.org/
Wiki: http://wiki.xiph.org/index.php/Speex
Lizenz: Xiph.org Lizenz (ähnlich der modifizierten BSD Lizenz)
Speex ist ein offizielles GNU-Projekt.
Tipps & Tricks
Das Programm "speexdec" kann nicht nur Speex-Dateien in unkomprimierte Formate konvertieren, es ist auch ein Player. Man kann Speex-Dateien einfach mit "speexdec <Dateiname>" abspielen.
Das Programm speexdec kann man natürlich auch von Skripten oder Programmen aus aufrufen, um diese mit Sprachausgabe auszustatten.
Mini-Howto
Der Speex Algorithmus ist für bestimmte Samplingraten optimiert. Man sollte seine Aufnahmen vor dem Kodieren also in eine dieser Samplingraten umwandeln:
- 8 kHz (narrowband)
- 16 kHz (wideband)
- 32 kHz (ultra-wideband)
Man kann eine Aufnahme zum Beispiel mit sox resamplen:
sox Aufnahme.wav -r 16000 Aufnahme-wideband.wav resample
Um diese Datei nun mit Speex zu kodieren, empfehle ich folgende Vorgehensweise (wenn es nicht gestreamt, sondern als Datei gespeichert werden soll.)
speexenc --quality 5 --vbr --dtx --comp 10 --title "Testaufnahme" --author "Theo Tester" --comment "speaker=Ludwig Laberkopp" Aufnahme-wideband.wav Aufnahme.spx
(Alles in einer Zeile einzugeben)
Erklärung:
- --quality 5
- Stellt die Qualität ein. Es sind Werte zwischen 0 und 10 einschließlich erlaubt. Ein kleinerer Wert führt zu kleineren Dateien mit geringerer Qualität
- --vbr
variable bitrate: führt zu optimaleren Ergebnissen bei gespeichterten Dateien, ist aber nicht für Daten geeignet, die gestreamt werden sollen.
- --dtx
- Discontinuous Transmission: Stille Sequenzen werden mit nur ganz wenigen Bit pro Sekunde kodiert. Dies ist auch nur verwendbar, wenn das Ergebnis als Datei gespeichert werden soll.
- --comp 10
- Wie rechenintensiv das Kodieren sein darf. 10 ist der höchste Wert. Dadurch dauert das Kodieren länger, es kommt aber ein besseres Ergebnis bei raus. Das Dekodieren wird dadurch übrigens nicht komplizierter.
- --title
- Der Titel der Aufnahme als Text
- --author
- Der Autor des Textes
- --comment
- Damit können beliebige Informationen gespeichert werden. Es muss immer als "Bezeichner=Text" angegeben werden. Diesen Parameter kann man mehrfach angeben. Die Bezeichner sollten immer in Englisch sein.
Beispiele
Bug in Linux! - Satire über den Linux-Pinguin von AndreasFoerster
Ich fühl' mich heut' so mies! - Gedicht von AndreasFoerster