我想发送我的音频数据并创建音频文件。 我不知道如何解码和写入音频数据
下面的代码是python flask代码和javascript。 index.html 包含 voice.js 和 fetch.js 来发送音频数据。
服务器.py
from flask import Flask, render_template, request, make_response
app = Flask(__name__)
@app.route("/")
def hello_world():
return render_template('index.html')
@app.route("/<name>.js")
def getJs(name):
return render_template(name+'.js')
@app.route("/audio", methods=['post'])
def audio():
f = open('temp.webm','+wb')
f.write(request.data)
f.close()
return make_response('', 200)
if __name__ == '__main__':
app.run()
语音.js
const voice = [];
navigator.mediaDevices
.getUserMedia({
audio: true,
})
.then((mediaStream) => {
const mediaRecorder = new MediaRecorder(mediaStream, {
// mimeType: 'audio/webm; codecs="pcm"',
// audioBitsPerSecond: 16000,
});
mediaRecorder.start(1000)
mediaRecorder.addEventListener("dataavailable", (e) => {
voice.push(e.data);
});
})
获取.js
setInterval(() => {
if (voice.length > 1) {
let blob = voice.shift()
fetch('http://localhost:5000/audio', {
method: 'post',
body: blob
})
console.log(blob)
}
}, 1000)
index.html
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
</head>
<body>
<p id="result">result</p>
</body>
<script src="voice.js"></script>
<script src="fetch.js"></script>
</html>
我想创建一个新的音频文件。 (例如'voice.wav')
您已经将音频数据保存为“.webm”文件。如果要将音频保存为“.wav”文件,请使用“pydub”库,如下所示:
pip install pydub
from pydub import AudioSegment
@app.route("/audio", methods=['post'])
def audio():
temp_filename = 'temp.webm'
with open(temp_filename, '+wb') as f:
f.write(request.data)
audio = AudioSegment.from_file(temp_filename, format="webm")
output_filename = 'voice.wav'
audio.export(output_filename, format="wav")
return make_response('', 200)
return make_response('', 200)
希望对您有所帮助。