项目实战:用distil-medium.en构建一个智能语音笔记生成器,只需100行代码!
【免费下载链接】distil-medium.en 项目地址: https://gitcode.com/mirrors/distil-whisper/distil-medium.en
项目构想:我们要做什么?
在这个项目中,我们将利用distil-medium.en模型构建一个智能语音笔记生成器。这个应用的功能非常简单但实用:
- 输入:用户上传一段语音文件(例如会议录音、讲座录音或日常语音备忘录)。
- 处理:应用通过
distil-medium.en模型将语音内容转录为文本。 - 输出:生成一份结构化的文本笔记,并支持关键词提取或摘要生成(可选扩展功能)。
这个工具非常适合需要快速整理语音内容的场景,比如会议记录、学习笔记或日常备忘。
技术选型:为什么是distil-medium.en?
distil-medium.en是Whisper模型的蒸馏版本,具有以下核心亮点,非常适合我们的项目:
- 高效快速:比原始Whisper模型快6倍,适合实时或快速转录需求。
- 轻量化:模型体积缩小49%,适合部署在资源有限的设备上。
- 高精度:在非分布数据上的词错误率(WER)仅比原始模型高1%,保证了转录的准确性。
- 支持长音频:通过分块处理技术,能够高效转录超过30秒的长音频文件。
这些特性使得distil-medium.en成为构建轻量级语音转录应用的理想选择。
核心实现逻辑
项目的核心逻辑分为以下几步:
- 加载模型:使用
transformers库加载distil-medium.en模型和处理器。 - 语音转录:通过
pipeline将语音文件转录为文本。 - 后处理:对转录文本进行格式化(如分段、标点修正等)。
- 扩展功能:可选的关键词提取或摘要生成。
以下是核心代码的逻辑框架:
# 1. 加载模型和处理器
model = AutoModelForSpeechSeq2Seq.from_pretrained("distil-whisper/distil-medium.en")
processor = AutoProcessor.from_pretrained("distil-whisper/distil-medium.en")
# 2. 创建语音识别管道
pipe = pipeline("automatic-speech-recognition", model=model, tokenizer=processor.tokenizer, feature_extractor=processor.feature_extractor)
# 3. 转录语音文件
result = pipe("audio.mp3")
# 4. 后处理
formatted_text = post_process(result["text"])
代码全览与讲解
以下是完整的项目代码,包含详细注释:
import torch
from transformers import AutoModelForSpeechSeq2Seq, AutoProcessor, pipeline
def load_model_and_processor():
"""加载模型和处理器"""
device = "cuda:0" if torch.cuda.is_available() else "cpu"
torch_dtype = torch.float16 if torch.cuda.is_available() else torch.float32
model = AutoModelForSpeechSeq2Seq.from_pretrained(
"distil-whisper/distil-medium.en",
torch_dtype=torch_dtype,
low_cpu_mem_usage=True,
use_safetensors=True
)
model.to(device)
processor = AutoProcessor.from_pretrained("distil-whisper/distil-medium.en")
return model, processor, device, torch_dtype
def transcribe_audio(audio_path):
"""转录语音文件"""
model, processor, device, torch_dtype = load_model_and_processor()
pipe = pipeline(
"automatic-speech-recognition",
model=model,
tokenizer=processor.tokenizer,
feature_extractor=processor.feature_extractor,
max_new_tokens=128,
chunk_length_s=15, # 支持长音频
torch_dtype=torch_dtype,
device=device,
)
result = pipe(audio_path)
return result["text"]
def post_process(text):
"""后处理:分段和标点修正"""
# 简单分段逻辑
sentences = text.split(". ")
formatted_text = ".\n".join(sentences)
return formatted_text
if __name__ == "__main__":
audio_file = "meeting_recording.mp3" # 替换为你的语音文件路径
transcribed_text = transcribe_audio(audio_file)
formatted_text = post_process(transcribed_text)
print("生成的语音笔记:\n", formatted_text)
代码讲解:
- 模型加载:
load_model_and_processor函数负责加载模型和处理器,并自动检测是否使用GPU加速。 - 语音转录:
transcribe_audio函数调用pipeline完成语音到文本的转换,支持长音频分块处理。 - 后处理:
post_process函数对转录文本进行简单分段,提升可读性。
效果展示与功能扩展
效果展示
假设输入是一段会议录音,输出可能如下:
生成的语音笔记:
今天会议讨论了项目进度。
下一阶段目标是完成用户测试。
需要在下周五前提交报告。
功能扩展
- 关键词提取:使用NLP库(如
spaCy)从转录文本中提取关键词。 - 摘要生成:集成摘要模型(如
BERT)生成会议摘要。 - 多语言支持:未来可以扩展支持其他语言的蒸馏模型。
通过这个项目,你可以快速上手distil-medium.en模型,并构建一个实用的语音笔记工具。希望这篇教程能激发你进一步探索语音技术的兴趣!
【免费下载链接】distil-medium.en 项目地址: https://gitcode.com/mirrors/distil-whisper/distil-medium.en
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考



