Подтвердить что ты не робот

Как записать голос пользователя с помощью Javascript/PHP?

В настоящее время я пытаюсь создать тестовый сайт, который позволяет пользователям записывать голосовые заметки и сохранять их в своей учетной записи. Каков наилучший способ сделать это, используя PHP или JavaScript?

Шаги, которые я ищу для этого процесса:

1) Пользователь щелкнет по кнопке записи. 2) Инициирование последовательности записи. 3) Остановка последовательности. 4) Именование файла и отправка его на сервер.

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

При поиске в Google я нашел несколько ссылок в StackOverflow, которые рассматривали подобные проблемы, но ответы не помогли. Множество решений указало на Flash, но я хотел бы как можно больше избежать этого. Поэтому мой вопрос сводится к "Можно ли записать голос с использованием JavaScript? Если да, то как?"

Спасибо заранее.

4b9b3361

Ответ 1

HTML5 Audio API широко не поддерживается в браузерах, я думаю, что он работает в Chrome, и Firefox недавно добавил его в ночные часы... На этом этапе требуются префиксы браузера, но общий API...

navigator.getUserMedia({audio: true}, function(stream) { /* do stuff */ });

Таким образом, это будет webkitGetUserMedia для Chrome и mozGetUserMedia для Firefox.

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

Ресурсы, представляющие интерес для getUserMedia:

Следующий вопрос может помочь вам:

руководство по использованию флэш-памяти или Java-сервлета для загрузки данных микрофона из браузера на сервер?

Ответ 2

Теперь вы можете записывать с микрофона, создавая звуковой график, который соединяет ваш локальный MediaStream с ScriptProcessingNode:

navigator.webkitGetUserMedia({video: true, audio: true}, function(stream) {
    var audioContext = new webkitAudioContext,
        mediaStreamSource = context.createMediaStreamSource(stream),
        processor = context.createJavaScriptNode(4096, 2, 2);

    processor.onaudioprocess = function(e) {
        // Process the audio data found in e.inputBuffer
    };

    mediaStreamSource.connect(processor);
    processor.connect(context.destination);
});

(с использованием префиксов поставщика Chrome)

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

неперемещенный 32-разрядный линейный ИКМ IEEE с номинальным диапазоном -1 → +1

в выбранный вами формат.

Аналогичный пример записи звука, его кодирования в wav файл и сохранения его (все клиентские) можно найти здесь:

https://github.com/muaz-khan/WebRTC-Experiment/tree/master/RecordRTC

Подробнее о AudioContext:

http://docs.webplatform.org/wiki/apis/webaudio/AudioContext

Ответ 3

До тех пор, пока не поступит аудиозапись HTML5, вам действительно нужно объединить решение, объединяющее Flash и мобильные устройства, загрузку файлов. На мобильных устройствах на экране загрузки файлов обычно есть аудио- или видеомагнитофон, поэтому пользователи могут записывать прямо со своего устройства.

Если устройство не имеет аудиозаписей при загрузке файла, вы должны использовать видеомагнитофон, а затем конвертировать видео в MP3 на сервер. Так мы делаем это над recordmp3online.com.