How to convert blob to wav file
function makeLink(){ let blob = new Blob(chunks, {type: media.type }) , Url = URL.createObjectURL(blob) , li = document.createElement('li') , mt = document.createElement(media.tag) , hf = document.createElement('a'); mt.controls = true; mt.src = Url; hf.href = Url; hf.download = `${counter++}${media.ext}`; hf.innerHTML = `donwload ${hf.download}`; let formData = new FormData(); formData.append(audio, blob, 'audio.wav'); let x='test' $.ajax({ type:'GET', url:'/answer/voice', data: formData, contentType: false, processData: false, success:function(result) { $("#chatbox").append('<p class ="userText"><audio style="background-color:white;" controls> <source src="' + Url+ '" type="audio/wav"></audio></p>'); $("#chatbox").append('<p class ="botText"><span>' + result.emotion+ '</span></p>'); $("#textInput").val("") }, error:function(result){ alert('sorry an error occured'); } });}
@app.route('/answer/voice', methods=['POST']) def answer_voice(): blob=request.files["audio"] print(blob) with open(blob, 'r') as f: result=get_audio_sentiments(f.read()) return jsonify({'emotion':result })
@Musa answer is right.I discovered this solution as well:
var xhr=new XMLHttpRequest(); var fd=new FormData(); fd.append("audio_data",blob, "output.wav"); xhr.open("POST","/answer/voice",true); xhr.send(fd); //processing data // jQuery(document).ready(function(){ xhr.onreadystatechange = function() { if (xhr.readyState === 4) { resultats = this.responseText var results=JSON.parse(resultats); console.log(typeof results); $("#chatbox").append('<p class ="userText"><audio style="background-color:white;" controls> <source src="' + Url+ '" type="audio/wav"></audio></p>'); let userHtml = '<p class="userText"><span>' +results.question + '</span></p>'; $("#chatbox").append(userHtml); $("#chatbox").append('<p class ="botText"><span>' +results.answerered+ ' '+ results.emotion+ '</span></p>'); $("#textInput").val("") } }
I used XMLHttpRequest
and it solved my issue