Moon Halo 2023-10-18 19:38 采纳率: 0%
浏览 17

JS获取音频并使用Flask保存为wav文件

img

img


前端浏览器录音结果传入Flask Flask保存后的wav文件没有时长 wav文件不完整

  • 写回答

1条回答 默认 最新

  • CSDN-Ada助手 CSDN-AI 官方账号 2023-10-19 04:04
    关注

    【以下回答由 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模块。

    希望这个解决方案能够帮到你,如果你还有任何问题,请随时追问。



    【相关推荐】



    如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^
    评论

报告相同问题?

问题事件

  • 创建了问题 10月18日

悬赏问题

  • ¥15 远程访问linux主机超时
  • ¥15 odoo17存货管理优势于中国国内该行业传统ERP或MES的详细解读和举例
  • ¥15 CPU卡指令整合指令数据都在图片上
  • ¥15 火车票关联12306问题
  • ¥15 odoo17处理受托加工产品
  • ¥15 如何用MATLAB编码图三的积分
  • ¥15 圆孔衍射光强随孔径变化
  • ¥15 MacBook pro m3max上用vscode运行c语言没有反应
  • ¥15 ESP-PROG配置错误,ALL ONES
  • ¥15 结构功能耦合指标计算