Я сделал это:
me@riverbrain:~/sgf$ echo "test" | text2wave -otype raw -F 16000 >> test.raw
который произвел аудиофайл без заголовка. Замечательная вещь в этом файле заключается в том, что его можно объединить (используя cat
, например, текст) с другим необработанным аудиофайлом.
Конечно, у меня есть проблема. Проблема в том, что я пока не могу играть.
me@riverbrain:~/sgf$ play test.raw
play FAIL formats: bad input format for file `test.raw': sampling rate was not specified
а также при указании частоты дискретизации
me@riverbrain:~/sgf$ play -r 16000 test.raw
play FAIL formats: bad input format for file `test.raw': data encoding was not specified
Когда я посмотрел какую-то информацию «кодирования», у меня возникло ощущение, что это во многом связано с архитектурой вашего процессора, но, возможно, я ошибаюсь. Во всяком случае, я не могу найти никакой документации о том, как «спросить» компьютер, какова кодировка данных необработанного аудиофайла. И я также знаю, что такое частота дискретизации, из-за ее настройки, но это насколько я могу получить.
Ответы:
Он может варьироваться, но, по крайней мере, для меня text2wave создает 1-канальный 16-разрядный целочисленный PCM со знаком. Это вполне нормально - и это будет очень ясно, когда вы их правильно сделаете (например, если вы по ошибке приписали целое число без знака, вы получите чрезвычайно искаженный звук)
С игрой это выглядит так:
Подозреваю, что эти параметры настраиваются где-то в Фестивале. Некоторые из них также могут быть жестко закодированы.
Единственная архитектурно-зависимая вещь, с которой вы можете столкнуться - это big против little endian; на моей машине с прямым порядком байтов пишется little-endian; если бы я переместил этот файл на машину с прямым порядком байтов, мне, вероятно, нужно было бы добавить
-L
. Если быtext2wav
они запускались на машине с прямым порядком байтов, я не уверен, что они будут записывать данные с прямым или прямым порядком байтов.источник
Вы, вероятно, можете создать свой собственный заголовок RIFF. Немного избиения должно сделать это .. и просто присоединить заголовок к другим вашим частям ...
Эта ссылка показывает макет заголовка: формат файла Canonical WAVE
Существует также ссылка на SO: преобразование аудиоданных в формате RAW в WAV с использованием сценариев , но ответы mplayer / mencoder имеют нулевой счет разметки. Тем не менее, кажется, что SoX работает.
SoX упоминается в обеих вышеуказанных ссылках и доступен в репозитории Ubuntu; Я полагаю, что это в других тоже.
PS ... Я просто попытался использовать
play
(не знал, что он существует) и обнаружил, что это SoX! ... Ссылка SO дает пример, скопированный сюда:sox -r 44100 -e unsigned -b 8 -c 1 <RAW_FILE> <TARGET_FILE>
Если вы не можете заставить его работать с sox , возможно, mplayer / mencoder или заголовок RIFF помогут вам.
источник
Используйте
aplay
вместоplay
воспроизведения необработанного файла, таким образом вы можете указать, что это необработанный звук, с помощью ключа -t:источник