我最终想要做的是从用户的麦克风录制,并在完成后将文件上传到服务器.到目前为止,我已设法使用以下代码为元素创建流:
var audio = document.getElementById("audio_preview");
navigator.getUserMedia = navigator.getUserMedia || navigator.webkitGetUserMedia || navigator.mozGetUserMedia || navigator.msGetUserMedia;
navigator.getUserMedia({video: false, audio: true}, function(stream) {
audio.src = window.URL.createObjectURL(stream);
}, onRecordFail);
var onRecordFail = function (e) {
console.log(e);
}
Run Code Online (Sandbox Code Playgroud)
我如何从那里,到录制到文件?
我需要将音频片段捕获为WAV文件,然后我可以将其传递给另一个python进行处理.问题是我需要确定何时存在音频然后记录它,当它变为静音时停止然后将该文件传递给处理模块.
我认为应该可以通过波形模块检测何时有纯静音并丢弃它然后只要检测到静音以外的其他内容开始录制,然后当线路再次静音时再停止录制.
只是不能完全了解它,任何人都可以让我开始一个基本的例子.
我想在我的Android手机上录制人声.我注意到Android有两个类来执行此操作:AudioRecord和MediaRecorder.有人能告诉我两者之间有什么区别,每种情况的适当用例是什么?
我希望能够实时分析人类语音以测量振幅等.我是否理解AudioRecord更适合此任务?
我注意到在官方Android 指南网页上录制音频,他们使用MediaRecorder而没有提及AudioRecord.
理论上可以在iPhone上录制电话吗?
我接受的答案是:
我不想直截了当地说"Apple不允许这样".我知道没有正式的方法可以做到这一点,当然也不适用于App Store应用程序,而且我知道有通话记录应用可以通过自己的服务器拨打电话.
我试过看看是否有办法用HTML5录制音频无济于事.我尝试使用这个例子, 但它没有用.当他说任何浏览器都不支持它时,我猜他真的是这个意思.
我错过了什么吗?也许这已经成为可能?在基于浏览器的应用程序上录制音频有哪些选择?
开源只请:)
有没有办法记录Android中的麦克风输入,同时它是实时播放/预览的过程?我尝试使用AudioRecord
和AudioTrack来做到这一点,但问题是我的设备无法播放录制的音频文件.实际上,任何Android播放器应用程序都无法播放录制的音频文件.
另一方面,使用Media.Recorder进行录制可以生成一个可以由任何播放器应用程序播放的良好录制的音频文件.但问题是我在实时录制麦克风输入时无法进行预览/播放.
任何反馈都非常感谢!提前致谢!
是否可以通过代码禁用Android(特别是1.5)麦克风的噪音消除功能?
我想创建一个愚蠢的MicrophoneApp来记录所有背景噪音,但我相信麦克风的噪音消除正在阻碍.我知道你可以做到这一点,如果你root手机和编辑设置(即本文),但我想在没有 root电话的情况下做到这一点.
我一直试图让我的应用程序录制来自麦克风的声音,然后(近似)实时播放,但是没有成功.
我分别使用AudioRecord和AudioTrack类进行录制和播放.我尝试了不同的方法,我试图记录传入的声音并将其写入文件,它工作正常.我也尝试使用AudioTrack播放该文件后的声音,它也可以正常工作.问题是当我尝试实时播放声音时,而不是在写完后读取文件.
这是代码:
//variables
private int audioSource = MediaRecorder.AudioSource.MIC;
private int samplingRate = 44100; /* in Hz*/
private int channelConfig = AudioFormat.CHANNEL_CONFIGURATION_MONO;
private int audioFormat = AudioFormat.ENCODING_PCM_16BIT;
private int bufferSize = AudioRecord.getMinBufferSize(samplingRate, channelConfig, audioFormat);
private int sampleNumBits = 16;
private int numChannels = 1;
// …
AudioRecord recorder = new AudioRecord(audioSource, samplingRate, channelConfig, audioFormat, bufferSize);
recorder.startRecording();
isRecording = true;
AudioTrack audioPlayer = new AudioTrack(AudioManager.STREAM_MUSIC, 44100, AudioFormat.CHANNEL_CONFIGURATION_MONO,
AudioFormat.ENCODING_PCM_16BIT, bufferSize, AudioTrack.MODE_STREAM);
if(audioPlayer.getPlayState() != AudioTrack.PLAYSTATE_PLAYING)
audioPlayer.play();
//capture data and record to file
int …
Run Code Online (Sandbox Code Playgroud) 我开始使用我的Android智能手机进行录音.
我成功将录音保存到PCM文件中.当我解析数据并打印出带符号的16位值时,我可以创建如下图所示的图形.但是,我不了解沿y轴的振幅值.
振幅值的单位究竟是多少?这些值是16位符号,因此它们的范围必须介于-32K到+ 32K之间.但这些价值代表什么呢?分贝?
如果我使用8位值,则值必须在-128到+128之间.如何将其映射到16位值的音量/"响度"?你会使用16比1的量化映射吗?
为什么会出现负值?我认为完全沉默会导致值为0.
如果有人可以将我指向一个网站,其中包含有关录制内容的信息,我将不胜感激.我发现PCM文件格式的网页,但不是数据值.
我正在getUserMedia({audio:true});
使用Recorder.js在浏览器中录制音频,然后将其导出为WAV文件,因为这是该库提供的唯一选项.
1分20秒的文件大14.1 MB.我需要将音频上传到服务器,我需要快速完成.如何以任何其他压缩格式转换WAV音频以降低文件大小?
我不介意转换为:
如果现在没办法转换为这些格式中的任何一种,我如何压缩客户端上的WAV文件?
PS:我做了很多搜索,找到了在JS中转换WAV的任何东西,但一无所获.libmp3lame.js无法在Chrome中运行.
谢谢!
audio-recording ×10
audio ×5
android ×4
audiorecord ×2
html5 ×2
iphone ×2
javascript ×2
wav ×2
getusermedia ×1
html5-audio ×1
ios ×1
microphone ×1
pcm ×1
python ×1
real-time ×1
record ×1