Как программно объединить файлы .wav? - PullRequest
1 голос
/ 02 декабря 2011

Я бы хотел сыграть какой-нибудь текст в речь только с цифрами.Я могу записать 10 файлов WAV, но как я могу объединить их программно?

Например, пользователь вводит 1234, а текст в речь объединяет 1.wav с 2.wav, 3.wav и 4.wav, чтобы произвести 1234.wav, который играет "один два три четыре".

Ответы [ 3 ]

0 голосов
/ 02 декабря 2011

Проект с открытым исходным кодом wavtools предоставляет хорошую справочную информацию для такого рода работы, если вы согласны с Perl. В противном случае возникает похожий вопрос с некоторыми примерами Java.

0 голосов
/ 02 декабря 2011

Самый простой формат файла .wav (RIFF) имеет 44-байтовый заголовок перед необработанными образцами PCM.Таким образом, для этих простых типов файлов .wav вы можете просто попытаться прочитать файлы как необработанные байты, удалив 44-байтовый заголовок из всех файлов, кроме первого, и объединяя примеры.Или просто воспроизведите сцепленные сэмплы напрямую, используя Audio Queue API.

0 голосов
/ 02 декабря 2011

1) создайте новый целевой буфер сэмплов (вам нужно знать размеры).

2) прочитайте сэмплы (например, с помощью API AudioFile и ExtAudioFile) и последовательно запишите их в буфер.Возможно, вы захотите добавить молчание между файлами.

Будет полезно, если ваши файлы имеют одинаковую битовую глубину (целевая битовая глубина - 16 должна быть в порядке) и частоту дискретизации.

В качестве альтернативыЕсли вы установили для всех файлов фиксированную, известную частоту дискретизации и битовую глубину, вы можете просто сохранить их как необработанные данные выборки и сделать это за гораздо меньшее время, поскольку вы можете просто добавлять данные как есть, не записывая все дополнительные аудиофайлы для чтения.программы.

...