news 2026/9/3 8:09:16

Paraformer-large邮件通知功能:完成转写后自动发送报告

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Paraformer-large邮件通知功能:完成转写后自动发送报告

Paraformer-large邮件通知功能:完成转写后自动发送报告

1. 实现目标:让语音转写更智能、更省心

你有没有遇到过这种情况:上传了一个长达两小时的会议录音,点击“开始转写”后就去忙别的事了,结果等了半天也不知道识别完成了没有?来回刷新页面太麻烦,一直挂着又浪费时间。

今天我们要解决的就是这个问题——给 Paraformer-large 语音识别系统加上“邮件通知”功能。当音频转写完成后,系统会自动把识别结果通过邮件发送到你的邮箱,真正做到“提交即忘”,大幅提升使用体验。

这个功能特别适合以下场景:

  • 长时间批量处理录音文件
  • 远程服务器上运行任务无法实时查看
  • 团队协作中需要及时同步转录内容

接下来,我会手把手教你如何在原有 Gradio 界面基础上,轻松集成自动发邮件功能。

2. 功能扩展思路与技术选型

2.1 整体流程设计

我们希望实现这样一个闭环流程:

用户上传音频 → 后台开始转写 → 转写完成 → 自动生成文本报告 → 自动发送邮件 → 返回提示信息

关键点在于:不能阻塞主界面响应,否则用户就得一直等着邮件发完才能操作下一步。所以我们采用同步逻辑中的简单延时处理方式(对于轻量级应用足够实用)。

2.2 邮件发送方案选择

Python 中常用的邮件库是smtplib+email组合,无需额外依赖,稳定性高,适合嵌入现有项目。

支持主流邮箱服务(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_email@qq.com" # 发件人邮箱 SENDER_PASSWORD = "your_auth_code" # 授权码(非登录密码!) RECEIVER_EMAIL = "your_email@qq.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_filename="unknown"): """发送转写结果邮件""" 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> <p><strong>音频文件:</strong>{audio_filename}</p> <p><strong>转写时间:</strong>{datetime.now().strftime('%Y-%m-%d %H:%M:%S')}</p> <hr> <h4>📝 识别结果:</h4> <pre style="font-family: Arial, sans-serif; font-size: 14px; background-color: #f5f5f5; padding: 10px; border-radius: 5px;"> {transcribed_text} </pre> <hr> <small style="color: #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 False

3.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( model=model_id, model_revision="v2.0.4", device="cuda: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( input=audio_path, batch_size_s=300, ) # 提取结果 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应该包含以下几个部分:

  1. 导包(gradio, funasr, smtplib, email 相关)
  2. 模型加载
  3. 邮件配置常量
  4. send_email()函数
  5. 增强版asr_process()函数
  6. Gradio 界面构建与启动

确保所有缩进正确,保存后重启服务即可生效。

4. 测试与验证步骤

4.1 第一步:检查依赖是否齐全

大多数情况下,Python 内置了smtplibemail模块,无需安装。但如果你遇到导入错误,可以运行:

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 第三步:完整流程测试

  1. 启动服务:python app.py
  2. 打开本地映射地址:http://127.0.0.1:6006
  3. 上传一段短音频(建议1分钟以内)
  4. 点击“开始转写”
  5. 观察终端输出是否有 ✅ 邮件发送成功
  6. 查看邮箱是否收到带格式的结果邮件

如果一切顺利,你会看到类似这样的效果:

📧 主题:【Paraformer转写完成】 - meeting_01.mp3 | 14:23
正文包含时间戳、原始音频名、识别文字和样式化排版

5. 使用技巧与常见问题解决

5.1 如何提升邮件送达率?

  • 使用企业邮箱或 Gmail 更稳定
  • QQ邮箱建议使用.com后缀而非.cn
  • 不要频繁发送,避免被判定为垃圾邮件
  • 可将发件人添加到收件箱联系人列表

5.2 如何自定义收件人?

目前是固定收件人,如果你想让用户输入邮箱,可以在界面上加一个输入框:

with gr.Row(): audio_input = gr.Audio(type="filepath", label="上传音频") email_input = gr.Textbox(label="接收邮箱", value="your_email@qq.com") submit_btn = gr.Button("开始转写") # 修改 click 绑定时传入 email_input submit_btn.click( fn=lambda audio, email: asr_process_with_custom_email(audio, email), inputs=[audio_input, email_input], outputs=text_output )

然后修改函数接收email参数并动态赋值RECEIVER_EMAIL

5.3 长音频处理期间界面卡住怎么办?

Gradio 默认是同步执行的,所以长音频会导致界面“假死”。解决方案有两个:

方案一:前端提示优化

在按钮点击后立即显示“正在转写,请耐心等待……”提示,减少焦虑感。

方案二:异步处理(进阶)

使用queue()开启异步模式:

demo.queue().launch(server_name="0.0.0.0", server_port=6006)

并配合gr.Progress()显示进度条(FunASR 目前不直接支持回调,需自行封装)。

6. 总结:打造真正可用的自动化语音处理系统


获取更多AI镜像

想探索更多AI镜像和应用场景?访问 CSDN星图镜像广场,提供丰富的预置镜像,覆盖大模型推理、图像生成、视频生成、模型微调等多个领域,支持一键部署。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/2 23:27:57

手把手教你学Simulink--电机控制架构与算法实现​场景示例:基于Simulink的SVPWM算法在电机控制中的实现仿真

目录 手把手教你学Simulink 一、引言:从“模拟正弦”到“数字最优”——SVPWM为何是现代电机控制的核心? 为什么选择SVPWM? 二、核心原理:六边形空间与七段式开关序列 1. 三相逆变器的8种开关状态 2. SVPWM基本思想 3. 七段式开关序列(对称) 三、应用场景:PMSM伺…

作者头像 李华
网站建设 2026/9/2 22:41:00

Python在CTF中的实战应用:解析、破解与自动化脚本编写

CTF网络安全大赛中的Python应用 CTF&#xff08;Capture The Flag&#xff09;网络安全大赛是一个在网络安全社区中广泛流行的竞赛形式。它通过各种挑战来检验参赛者的网络安全技能&#xff0c;包括逆向工程、漏洞利用、密码学、Web安全等。Python作为一种高效而强大的编程语言…

作者头像 李华
网站建设 2026/9/2 7:30:33

C++模板分离编译技术揭秘,资深架构师不会轻易告诉你的3个技巧

第一章&#xff1a;C模板分离编译的背景与挑战 C 模板是泛型编程的核心机制&#xff0c;允许开发者编写与数据类型无关的通用代码。然而&#xff0c;当尝试将模板的声明与定义分离到不同的文件&#xff08;如头文件与源文件&#xff09;时&#xff0c;开发者常遭遇链接错误。这…

作者头像 李华
网站建设 2026/9/2 23:29:47

网络安全到底是什么?从理论到实战,这一篇入门指南管够!

一、什么是网络安全&#xff1f; “网络安全是指网络系统的硬件、软件及其系统中的数据受到保护&#xff0c;不因偶然的或者恶意的原因而遭受到破坏、更改、泄露、系统连续可靠正常地运行&#xff0c;网络服务不中断。” 说白了网络安全就是维护网络系统上的信息安全。 信息…

作者头像 李华
网站建设 2026/9/3 0:19:48

基于Simulink的FOC矢量控制架构设计与仿真

目录 手把手教你学Simulink 一、引言&#xff1a;从“盲目驱动”到“精准操控”——FOC为何是现代电机控制的灵魂&#xff1f; 二、核心原理&#xff1a;FOC的“解耦魔法” 1. PMSM数学模型&#xff08;d-q同步旋转坐标系&#xff09; 2. FOC控制架构&#xff08;双闭环&a…

作者头像 李华
网站建设 2026/9/2 23:29:10

基于NE555多谐振荡器电子琴门报警器铃警笛流水灯台灯转盘设计(设计源文件+万字报告+讲解)(支持资料、图片参考_相关定制)_文章底部可以扫码

NE555 8位流水灯跑马灯电位器调节频率系统1 产品功能描述&#xff1a; 本系统由555定时器系统、CD4017十进制计数器/脉冲分配器、8位LED流水灯组成。 1、上电后&#xff0c;8位LED灯作流水灯循环亮灭。 2、调节电位器可以调节LED灯亮灭循环的速度。 NE555LED电子幸运转盘灯2…

作者头像 李华