Ich hab's gemacht:
me@riverbrain:~/sgf$ echo "test" | text2wave -otype raw -F 16000 >> test.raw
die eine Headerless-Audiodatei erzeugt. Das Wunderbare an dieser Datei ist, dass sie (unter Verwendung von cat
Text) mit einer anderen rohen Audiodatei verkettet werden kann.
Natürlich habe ich ein Problem. Das Problem ist, dass ich es noch nicht spielen kann.
me@riverbrain:~/sgf$ play test.raw
play FAIL formats: bad input format for file `test.raw': sampling rate was not specified
und auch bei der Angabe der Abtastrate
me@riverbrain:~/sgf$ play -r 16000 test.raw
play FAIL formats: bad input format for file `test.raw': data encoding was not specified
Als ich einige Informationen nachschlüsselte, hatte ich das Gefühl, dass dies viel mit Ihrer Prozessorarchitektur zu tun hat, aber vielleicht irre ich mich. Wie auch immer, ich kann keine Dokumentation darüber finden, wie man den Computer nach der Datencodierung der Roh-Audiodatei fragt. Und ich weiß auch, wie hoch die Abtastrate ist, weil ich sie selbst eingestellt habe, aber so weit kann ich kommen.
Antworten:
Es kann variieren - aber zumindest für mich erzeugt text2wave 1-Kanal-16-Bit-Ganzzahl-PCM mit Vorzeichen. Diese sind ziemlich normal - und es wird sehr klar sein, wenn Sie sie richtig haben (z. B. wenn Sie versehentlich eine Ganzzahl ohne Vorzeichen haben, erhalten Sie einen extrem verzerrten Klang).
Mit dem Spiel sieht das so aus:
Ich vermute, diese Parameter sind irgendwo im Festival konfiguriert. Einige von ihnen sind möglicherweise auch fest codiert.
Die einzige architekturabhängige Sache, der Sie begegnen können, ist Big vs. Little Endian. auf meiner Little-Endian-Maschine schreibt Festival Little-Endian; Wenn ich diese Datei auf einen Big-Endian-Computer verschieben würde, müsste ich sie wahrscheinlich hinzufügen
-L
. Wenntext2wav
es auf einem Big-Endian-Computer ausgeführt würde, bin ich mir nicht sicher, ob es Big- oder Little-Endian-Daten schreiben würde.quelle
Sie können wahrscheinlich Ihren eigenen RIFF-Header erstellen. Ein bisschen Bashing sollte es tun ... und einfach den Header auf deine anderen Teile setzen ...
Dieser Link zeigt das Header-Layout: Das Canonical WAVE-Dateiformat
Es gibt auch einen verwandten Link zu SO: Konvertieren von RAW-Audiodaten in WAV mit Skripten, aber die Antworten von mplayer / mencoder haben eine markierte Anzahl von Null. Es scheint jedoch, dass SoX funktioniert.
SoX wird in beiden oben genannten Links erwähnt und ist in Ubuntus Repo verfügbar. Ich nehme an, es ist auch in anderen.
PS ... Ich habe es gerade versucht
play
(wusste nicht, dass es existiert) und festgestellt, dass es SoX ist! ... Der SO-Link gibt ein Beispiel, das hier kopiert wurde:sox -r 44100 -e unsigned -b 8 -c 1 <RAW_FILE> <TARGET_FILE>
Wenn Sie es mit Sox nicht zum Laufen bringen können , wird es vielleicht von mplayer / mencoder oder dem RIFF-Header für Sie in Gang gebracht.
quelle
Verwenden Sie
aplay
stattplay
, um eine Rohdatei abzuspielen. Auf diese Weise können Sie mit der Option -t festlegen, dass es sich um ein Roh-Audio handelt:quelle