开发前准备
前端开发:
我是玩具录音
发送语音
var serv = "服务器ip";
var reco = null;
var audio_context = new AudioContext();//音频内容对象
navigator.getUserMedia = (navigator.getUserMedia ||
navigator.webkitGetUserMedia ||
navigator.mozGetUserMedia ||
navigator.msGetUserMedia); // 做的一个兼容问题
navigator.getUserMedia({audio: true}, create_stream, function (err) {
console.log(err)
});
function create_stream(user_media) {
var stream_input = audio_context.createMediaStreamSource(user_media);
reco = new Recorder(stream_input);
}
function start_reco() {
reco.record();
}
function stop_reco() {
reco.stop();
reco.exportWAV(function (wav_file) {
console.log(wav_file);
var formdata = new FormData(); // form 表单 {key:value}
formdata.append("reco",wav_file); // form input type="file"
$.ajax({
url: serv + "/upload",
type: 'post',
processData: false,
contentType: false,
data: formdata,
dataType: 'json',
success: function (data) {
console.log(data);
if(data.code == 0){
document.getElementById("player").src="拼接一个提交的地址"+data.filename;
document.getElementById("content").innerText=data.content
}
}
})
});
reco.clear(); // 每次执行完,清空reco容器
}
后端开发:
from flask import Flask,request,redirect,render_template,jsonify,send_file
from uuid import uuid4
import audio2text
app = Flask(__name__)
@app.route('/')
def index():
return render_template('web_soon.html')
@app.route('/upload',methods=['post'])
def upload():
fi = request.files.get('reco')
fi_name = f"{uuid4()}.m4a"
fi.save(fi_name)
ret_sb = audio2text.speech_sb(fi_name) //语音识别的函数
ret_npl = audio2text.my_npl(ret_sb.get('result'),'123') // 自然语言处理
ret_hc_filename = audio2text.speech_hc(uuid4(),ret_npl) // 将自然语言处理的结果合成语音
ret = {
"filename":ret_hc_filename,
"content":ret_npl,
"code":0
}
return jsonify(ret)
@app.route("/get_file/")
def get_file(filename):
return send_file(filename)
if __name__ == '__main__':
app.run(('0.0.0.0'),8600)