You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

多模态情感分析毕设:如何将实时录制音频保存为.wav/.mp3?

实时音频保存为WAV/MP3的实现方案

针对你的多模态情感分析毕业设计,下面是给代码添加实时音频保存功能的具体实现:

一、保存为WAV文件(无需额外依赖)

你的现有代码已经导入了wave库,且speech_recognition的AudioData对象自带get_wav_data()方法,可以直接生成完整的WAV格式字节流,直接写入文件即可。我们可以添加一个保存函数,并在每次录制后调用:

修改后的完整代码(含WAV保存)

import pyttsx3
import speech_recognition as sr
from datetime import datetime
from transformers import pipeline
from gtts import gTTS

engine = pyttsx3.init()
r = sr.Recognizer()

# 新增:保存音频为WAV文件的函数
def save_audio_to_wav(audio_data, save_dir="./recordings"):
    import os
    # 创建保存目录(不存在则自动创建)
    os.makedirs(save_dir, exist_ok=True)
    # 生成带时间戳的文件名,避免覆盖
    timestamp = datetime.now().strftime("%Y%m%d_%H%M%S")
    filename = f"{save_dir}/recording_{timestamp}.wav"
    # 直接写入WAV字节流
    with open(filename, "wb") as f:
        f.write(audio_data.get_wav_data())
    print(f"音频已保存为:{filename}")

def transcribe_audio(audio):
    return r.recognize_google(audio)

def analyze_waveform(audio):
    # 你的波形分析代码
    pass

def analyze_sentiment(text):
    classifier = pipeline("text-classification", model='bhadresh-savani/distilbert-base-uncased-emotion', return_all_scores=False)
    prediction = classifier(text)
    return prediction

def get_llm_response(text):
    # 替换为你的LLM实际调用逻辑
    return "模拟LLM响应:" + text

def text_to_speech(text):
    engine.say(str(text))
    engine.runAndWait()

def handle_real_time_audio():
    while True:
        with sr.Microphone() as source:
            print("Listening...")
            audio = r.listen(source)
            
            # 新增:保存录制的音频为WAV
            save_audio_to_wav(audio)
            
            text = transcribe_audio(audio)
            print(f"转录文本:{text}")
            
            analyze_waveform(audio)
            sentiment = analyze_sentiment(text)
            print("当前情感:" + str(sentiment))
            
            llm_response = get_llm_response(text)
            text_to_speech(str(llm_response))

if __name__ == "__main__":
    handle_real_time_audio()

二、保存为MP3文件(需额外依赖)

如果需要保存为体积更小的MP3格式,需要借助pydub库,同时需要安装FFmpeg作为后端处理:

步骤1:安装依赖

pip install pydub

根据系统安装FFmpeg:

  • Windows:下载FFmpeg压缩包,解压后将bin目录添加到系统PATH
  • macOS:brew install ffmpeg
  • Linux:sudo apt install ffmpeg

步骤2:添加MP3保存功能

在上述代码基础上,新增MP3保存函数:

from pydub import AudioSegment

# 新增:保存音频为MP3文件的函数
def save_audio_to_mp3(audio_data, save_dir="./recordings"):
    import os
    os.makedirs(save_dir, exist_ok=True)
    timestamp = datetime.now().strftime("%Y%m%d_%H%M%S")
    filename = f"{save_dir}/recording_{timestamp}.mp3"
    
    # 将AudioData转换为pydub可处理的AudioSegment
    audio_segment = AudioSegment(
        data=audio_data.get_raw_data(),
        sample_width=audio_data.sample_width,
        frame_rate=audio_data.sample_rate,
        channels=1  # 麦克风默认单声道,若使用立体声则改为2
    )
    # 导出为MP3格式
    audio_segment.export(filename, format="mp3")
    print(f"音频已保存为:{filename}")

然后在handle_real_time_audio()中替换或添加调用save_audio_to_mp3(audio)即可。

关键说明

  • 用时间戳命名文件,避免多次录制的音频互相覆盖
  • 自动创建保存目录,无需手动提前创建
  • WAV保存无需额外依赖,适合快速验证;MP3体积更小,适合长期存储

内容的提问来源于stack exchange,提问作者Muhammad Talha Khan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.29 07:08:18