2026/2/8 22:43:37
网站建设
项目流程
宁波咨询网站设计,wordpress怎么打删除线,湘潭网站建设定制磐石网络,网站开发的结构图Paraformer-large邮件通知功能#xff1a;完成转写后自动发送报告
1. 实现目标#xff1a;让语音转写更智能、更省心
你有没有遇到过这种情况#xff1a;上传了一个长达两小时的会议录音#xff0c;点击“开始转写”后就去忙别的事了#xff0c;结果等了半天也不知道识别…Paraformer-large邮件通知功能完成转写后自动发送报告1. 实现目标让语音转写更智能、更省心你有没有遇到过这种情况上传了一个长达两小时的会议录音点击“开始转写”后就去忙别的事了结果等了半天也不知道识别完成了没有来回刷新页面太麻烦一直挂着又浪费时间。今天我们要解决的就是这个问题——给 Paraformer-large 语音识别系统加上“邮件通知”功能。当音频转写完成后系统会自动把识别结果通过邮件发送到你的邮箱真正做到“提交即忘”大幅提升使用体验。这个功能特别适合以下场景长时间批量处理录音文件远程服务器上运行任务无法实时查看团队协作中需要及时同步转录内容接下来我会手把手教你如何在原有 Gradio 界面基础上轻松集成自动发邮件功能。2. 功能扩展思路与技术选型2.1 整体流程设计我们希望实现这样一个闭环流程用户上传音频 → 后台开始转写 → 转写完成 → 自动生成文本报告 → 自动发送邮件 → 返回提示信息关键点在于不能阻塞主界面响应否则用户就得一直等着邮件发完才能操作下一步。所以我们采用同步逻辑中的简单延时处理方式对于轻量级应用足够实用。2.2 邮件发送方案选择Python 中常用的邮件库是smtplibemail组合无需额外依赖稳定性高适合嵌入现有项目。支持主流邮箱服务QQ、163、Gmail、Outlook等只需要开启 SMTP 功能并获取授权码即可。为什么不选第三方服务像 SendGrid、阿里云邮件推送虽然更专业但需要注册账号、配置密钥、可能涉及费用。而我们只是想做个简单的结果通知本地 SMTP 完全够用部署也快。3. 修改 app.py添加邮件发送功能我们现在要修改原来的app.py文件在识别完成后加入邮件发送逻辑。3.1 新增邮件配置参数首先在代码顶部附近添加你的邮箱配置信息请替换成自己的# 邮件通知配置 SMTP_SERVER smtp.qq.com # QQ邮箱SMTP服务器 SMTP_PORT 587 # TLS端口 SENDER_EMAIL your_emailqq.com # 发件人邮箱 SENDER_PASSWORD your_auth_code # 授权码非登录密码 RECEIVER_EMAIL your_emailqq.com # 收件人邮箱可设为不同地址注意QQ邮箱需手动开启“POP3/SMTP服务”并在设置中获取“授权码”。不要使用登录密码3.2 编写 send_email 函数在asr_process函数之前定义一个通用的邮件发送函数import smtplib from email.mime.text import MIMEText from email.mime.multipart import MIMEMultipart from datetime import datetime def send_email(transcribed_text, audio_filenameunknown): 发送转写结果邮件 try: # 创建带主题和发件人信息的邮件对象 msg MIMEMultipart() msg[From] SENDER_EMAIL msg[To] RECEIVER_EMAIL msg[Subject] f【Paraformer转写完成】 - {audio_filename} | {datetime.now().strftime(%H:%M)} # 构建邮件正文 body f h3 语音转写已完成/h3 pstrong音频文件/strong{audio_filename}/p pstrong转写时间/strong{datetime.now().strftime(%Y-%m-%d %H:%M:%S)}/p hr h4 识别结果/h4 pre stylefont-family: Arial, sans-serif; font-size: 14px; background-color: #f5f5f5; padding: 10px; border-radius: 5px; {transcribed_text} /pre hr small stylecolor: #888;本邮件由 Paraformer-large 离线语音识别系统自动发出。/small msg.attach(MIMEText(body, html, utf-8)) # 连接SMTP服务器并发送 server smtplib.SMTP(SMTP_SERVER, SMTP_PORT) server.starttls() # 启用TLS加密 server.login(SENDER_EMAIL, SENDER_PASSWORD) server.send_message(msg) server.quit() print(✅ 邮件发送成功) return True except Exception as e: print(f❌ 邮件发送失败: {str(e)}) return False3.3 更新 asr_process 函数以触发邮件现在我们将原来的asr_process函数升级一下让它在识别完成后尝试发送邮件import os import gradio as gr from funasr import AutoModel # 加载模型 model_id iic/speech_paraformer-large-vad-punc_asr_nat-zh-cn-16k-common-vocab8404-pytorch model AutoModel( modelmodel_id, model_revisionv2.0.4, devicecuda:0 ) def asr_process(audio_path): if audio_path is None: return 请先上传音频文件 # 获取文件名用于邮件标题 filename os.path.basename(audio_path) if audio_path else unknown_audio # 开始识别 res model.generate( inputaudio_path, batch_size_s300, ) # 提取结果 if len(res) 0: text_result res[0][text] else: return 识别失败请检查音频格式 # 尝试发送邮件 success send_email(text_result, filename) # 返回结果 邮件状态提示 status_msg 邮件已发送至您的邮箱 if success else ⚠️ 转写完成但邮件发送失败 return f{text_result}\n\n---\n{status_msg}3.4 完整更新后的 app.py 结构概览你现在完整的app.py应该包含以下几个部分导包gradio, funasr, smtplib, email 相关模型加载邮件配置常量send_email()函数增强版asr_process()函数Gradio 界面构建与启动确保所有缩进正确保存后重启服务即可生效。4. 测试与验证步骤4.1 第一步检查依赖是否齐全大多数情况下Python 内置了smtplib和email模块无需安装。但如果你遇到导入错误可以运行pip install smtplib email不过通常不需要。4.2 第二步测试邮件功能独立运行你可以先写一个测试脚本验证邮件能否正常发出# test_email.py from send_email import send_email # 假设你把函数单独提取出来了 if __name__ __main__: sample_text 这是一条来自 Paraformer 的测试转录内容。\n时间 str(datetime.now()) send_email(sample_text, test_audio.wav)运行它看是否能收到邮件。4.3 第三步完整流程测试启动服务python app.py打开本地映射地址http://127.0.0.1:6006上传一段短音频建议1分钟以内点击“开始转写”观察终端输出是否有 ✅ 邮件发送成功查看邮箱是否收到带格式的结果邮件如果一切顺利你会看到类似这样的效果 主题【Paraformer转写完成】 - meeting_01.mp3 | 14:23正文包含时间戳、原始音频名、识别文字和样式化排版5. 使用技巧与常见问题解决5.1 如何提升邮件送达率使用企业邮箱或 Gmail 更稳定QQ邮箱建议使用.com后缀而非.cn不要频繁发送避免被判定为垃圾邮件可将发件人添加到收件箱联系人列表5.2 如何自定义收件人目前是固定收件人如果你想让用户输入邮箱可以在界面上加一个输入框with gr.Row(): audio_input gr.Audio(typefilepath, label上传音频) email_input gr.Textbox(label接收邮箱, valueyour_emailqq.com) submit_btn gr.Button(开始转写) # 修改 click 绑定时传入 email_input submit_btn.click( fnlambda audio, email: asr_process_with_custom_email(audio, email), inputs[audio_input, email_input], outputstext_output )然后修改函数接收email参数并动态赋值RECEIVER_EMAIL5.3 长音频处理期间界面卡住怎么办Gradio 默认是同步执行的所以长音频会导致界面“假死”。解决方案有两个方案一前端提示优化在按钮点击后立即显示“正在转写请耐心等待……”提示减少焦虑感。方案二异步处理进阶使用queue()开启异步模式demo.queue().launch(server_name0.0.0.0, server_port6006)并配合gr.Progress()显示进度条FunASR 目前不直接支持回调需自行封装。6. 总结打造真正可用的自动化语音处理系统获取更多AI镜像想探索更多AI镜像和应用场景访问 CSDN星图镜像广场提供丰富的预置镜像覆盖大模型推理、图像生成、视频生成、模型微调等多个领域支持一键部署。