

前端浏览器录音结果传入Flask Flask保存后的wav文件没有时长 wav文件不完整
关注【以下回答由 GPT 生成】
根据你的描述,录音文件保存后出现了时长不正确和音频内容缺失的问题。这可能是由于在前端浏览器的录音过程中,音频数据未能正确传递给Flask服务器导致的。下面是我给出的解决方案:
在JavaScript代码中,尝试使用audioRecorder对象来录制音频,而不是示例中的mediaRecorder对象。为了使用audioRecorder对象,我们需要使用一个Web API,如Web Audio API。
这是一个简单的示例,展示如何使用Web Audio API和audioRecorder对象来录制音频:
// 创建一个新的音频上下文对象
const audioContext = new (window.AudioContext || window.webkitAudioContext)();
// 创建一个音频输入节点
const audioInput = audioContext.createMediaStreamSource(stream);
// 创建一个音频处理节点
const recorder = new Recorder(audioInput);
// 开始录音
recorder.record();
// 停止录音,并保存录音文件
recorder.stop();
recorder.exportWAV(function(audioBlob) {
const formData = new FormData();
formData.append('audio', audioBlob, 'recorded_audio.wav');
fetch('/save-audio', {
method: 'POST',
body: formData
})
.then(function(response) {
console.log('录音文件已保存到服务器');
})
.catch(function(error) {
console.error('保存录音文件时出错:', error);
});
});
这段代码中,我们使用audioInput作为音频输入源,创建一个Recorder对象,并调用record()方法开始录音。然后,我们使用stop()方法停止录音,并使用exportWAV()方法导出录音文件的audioBlob对象。
在Flask服务器端,我们需要使用WAV库来正确读取和保存音频文件。在/save-audio端点的处理函数中,我们可以按照以下方式来处理音频文件:
from flask import Flask, request
from scipy.io.wavfile import write
app = Flask(__name__)
@app.route('/save-audio', methods=['POST'])
def save_audio():
audio_file = request.files['audio']
sample_rate, audio_data = wavfile.read(audio_file)
# 处理音频数据
# 将音频数据写入WAV文件
write('path/to/save/recorded_audio.wav', sample_rate, audio_data)
return '录音文件已保存到服务器'
if __name__ == '__main__':
app.run()
在这段Python代码中,我们从请求中获取audio文件对象,并使用wavfile.read()函数读取音频文件数据和采样率。然后我们可以对音频数据进行处理(如果需要的话),最后使用write()函数将音频数据写入WAV文件中。
请确保在Flask服务器中安装了scipy库和wavfile模块。
希望这个解决方案能够帮到你,如果你还有任何问题,请随时追问。
【相关推荐】