多模态情感分析毕设:如何将实时录制音频保存为.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
相关产品推荐
相关产品推荐

