调用手机麦克风
android默认录音格式amr,ios默认wav,可通过RecordOptions设置
//开启长按、释放功能
mui.init({
gestureConfig:{
longtap:true,
hold:true,
releaase:true
}
});
var r;
var voiceTime;
//按住录音
document.getElementById("holdDiv").addEventListener("hold", function() {
r=plus.audio.getRecorder(); //录音对象
if(r == null){
mui.alert("调用麦克风失败!", "提示信息", "关闭", null);
return ;
}
voiceTime =(new Date()).valueOf();
var voicePath="_doc/audio/";
r.record({filename:voicePath,samplerate:16000},function(path){
//录音成功回调
mui.showLoading("正在提交..","div");
plus.io.resolveLocalFileSystemURL(path,function(entry){
var url = jsonp_url + "sys/MobileWays/recVoice?&mobileLogin=true";
var task=plus.uploader.createUpload(url,{method:"POST"},function(t,status){
mui.hideLoading();
if(status == 200){
var dataJson=JSON.parse(t.responseText);
//语音解析成功
if(dataJson.result == "1"){
mui.alert("识别结果:" + dataJson.data,"信息提示","关闭",function(){
});
}else{
mui.alert("语音解析失败:" + dataJson.data,"系统错误","关闭",false);
}
}else{
mui.alert(status + ":语音解析失败!","系统错误","关闭",false);
}
});
task.addFile(path,{key:"file"});
task.start();
});
},function(e){
//录音错误回调
mui.alert("录音失败!" + e.message, "提示信息", "关闭", null);
return ;
});
})
//释放
document.getElementById("holdDiv").addEventListener("release", function() {
var timeNow=(new Date()).valueOf();
if((parseInt(timeNow) - parseInt(voiceTime)) >= 2000){
//停止录音
if(r!=null){
r.stop();
}
}else{
mui.toast('录音不足2秒,请重新录入!');
}
})
选择语音文件
使用的file标签
var vFile;
document.getElementById("voiceFile").addEventListener("change",function(){
vFile=this.files[0];
var fileName=this.files[0].name;
var suffix=fileName.substring(fileName.lastIndexOf(".") + 1);
//可以限制后缀名
var url = URL.createObjectURL(this.files[0]);
var audioElement = new Audio(url);
var duration;
audioElement.addEventListener("loadedmetadata", function (_event) {
duration = audioElement.duration;
if(parseInt(duration) >= 50){
mui.toast("音频长度超过50秒!");
return ;
}
//上传音频识别
mui.showLoading("正在提交..","div");
var formData = new FormData();
formData.append("file",vFile);
var url = jsonp_url + "sys/MobileWays/recVoice";
$.ajax({
url: url,
type: "POST",
data: formData,
contentType: false,
processData: false,
success: function (data) {
mui.hideLoading();
var dataJson=JSON.parse(data);
},
error: function () {
mui.hideLoading();
mui.alert("语音解析失败!","系统错误","关闭",false);
}
});
});
});
后台使用的百度语音识别