如何记录用户';使用Javascript/PHP的语音


How can I record a user's voice using Javascript/PHP?

我目前正在尝试创建一个测试站点,允许用户录制语音笔记并将其保存到他们的帐户中。使用PHP或JavaScript最好的方法是什么?

我希望这个过程的步骤是:

1) 用户单击记录按钮。2)启动记录序列3) 正在停止序列。4) 命名文件并将其发送到服务器。

我的主要查询集中在第二步上,在那里我需要一些与用户麦克风交互的机制来录制语音。我对web开发本身还是个新手,我不知道如何使用JavaScript调用语音录制。

在谷歌搜索后,我在StackOverflow中找到了一些链接,这些链接解决了类似的问题,但答案没有帮助。很多解决方案都指向Flash,但我希望尽可能避免这种情况。因此,我的问题可以归结为"是否可以使用JavaScript录制语音?如果可以,如何录制?"

提前谢谢。

HTML5 Audio API在浏览器中不受广泛支持,我认为它可以在Chrome和Firefox中使用,最近它被添加到了它的夜总会。。。在此阶段需要浏览器前缀,但一般的API是…

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

因此,这将是Chrome的webkitGetUserMedia和Firefox的mozGetUserMedia

您现在更一致的选择是通过Flash或Java等浏览器插件,或者创建用户需要安装的桌面客户端。

关于getUserMedia的感兴趣的资源:

  • getUserMedia简介
  • getUserMedia已添加到Firefox夜生活
  • Chromium中getUserMedia的仅音频问题

以下问题可能会进一步帮助您:

使用flash或javaservlet将麦克风数据从浏览器上传到服务器的教程?

您现在可以通过创建将本地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供应商前缀)

您可以将其连接到Websockets,甚至是普通的XHR,将块发送到服务器,服务器可以将其处理为音频文件。您需要从转换每个通道

标称范围为-1->+1 的非交错IEEE 32位线性PCM

转换为您选择的格式。

这里可以找到一个类似的音频录制、编码为wav文件并保存(所有客户端)的例子:

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

更多关于AudioContext:的详细信息

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

在HTML5音频录制到来之前,您确实需要将Flash和移动设备上的文件上传相结合的解决方案。在移动设备上,文件上传屏幕通常有一个音频或视频记录器,因此用户可以直接从设备上进行记录。

如果设备在上传文件时没有录音机,则应使用录音机,然后在服务器上将视频转换为MP3。这就是我们在recordmp3online.com.

上对其进行处理的方式