Преобразование из 16-битного WAV в GSM с использованием SOX - PullRequest
1 голос
/ 19 июля 2011

В настоящее время я работаю над интеграцией телефонии с Asterisk и веб-интерфейсом PHP. Я хочу дать пользователю возможность загрузить свое собственное настраиваемое приветствие в файл wav, а затем, как только он окажется на сервере, преобразовать файл wav в файл gsm с частотой 8000 Гц. В настоящее время я пытаюсь использовать sox для достижения этой цели.

Однако, похоже, что когда я конвертирую что-либо, кроме 8 кГц, сохраненного в gsm, файл gsm сильно искажается. Это почти как замедление файла в 10 раз (3-секундное введение в формате wav превращается в 30-секундный файл gsm) Я пробовал несколько комбинаций скорости и повторной выборки безрезультатно. В идеале я хотел бы взять любой загруженный файл wav и преобразовать его, не возлагая слишком большой ответственности на пользователя для его правильного кодирования. Я определенно не аудиофил, поэтому, если кто-нибудь и укажет мне правильное направление, это будет очень цениться.

Ответы [ 3 ]

2 голосов
/ 05 августа 2011

Это команда, которую я использую для преобразования обычных 16-битных файлов .wav в 8-битные моно .gsm файлы (работает нормально):

sox input.wav -r 8000 -c1 output.gsm lowpass 4000 compand 0.02,0.05 -60,-60,-30,-10,-20,-8,-5,-8,-2,-8 -8 -7 0.05
0 голосов
/ 14 июня 2012

Я использую

sox foo.wav -r 8000 -c1 foo.gsm resample -ql
0 голосов
/ 20 июля 2011

Я видел случаи с sox, где мне нужно было разбивать изменения и передавать их друг за другом, а не одной командой.

Как выглядит ваш sox cmd?

Не могли бы высначала преобразовать wav в 8 кГц, затем перекодировать, передавая выходные данные одного вызова sox другому?

...