本地部署 whisper-medusa

本地部署 whisper-medusa

  • [0. 引言](#0. 引言)
  • [1. 本地部署](#1. 本地部署)
    • [1-1. 创建虚拟环境](#1-1. 创建虚拟环境)
    • [1-2. 克隆代码](#1-2. 克隆代码)
    • [1-3. 安装依赖模块](#1-3. 安装依赖模块)
    • [1-4. 创建 Web UI](#1-4. 创建 Web UI)
    • [1-5. 启动 Web UI](#1-5. 启动 Web UI)
    • [1-5. 访问 Web UI](#1-5. 访问 Web UI)

0. 引言

Whisper 是一种用于语音转录和翻译的高级编码器-解码器模型,通过编码和解码阶段处理音频。鉴于其尺寸大和推理速度慢,人们提出了各种优化策略(例如 Faster-Whisper 和 Speculative Decoding)来提高性能。我们的 Medusa 模型建立在 Whisper 的基础上,通过每次迭代预测多个标记,这显着提高了速度,同时 WER 略有下降。我们在 LibriSpeech 数据集上训练和评估我们的模型,与普通 Whisper 模型相比,展示了强大的性能速度改进和同等准确度。

1. 本地部署

1-1. 创建虚拟环境

复制代码
conda create -n whisper-medusa python=3.11 -y
conda activate whisper-medusa

1-2. 克隆代码

复制代码
git clone https://github.com/aiola-lab/whisper-medusa.git
cd whisper-medusa

1-3. 安装依赖模块

复制代码
pip install torch==2.2.2 torchvision==0.17.2 torchaudio==2.2.2 --index-url https://download.pytorch.org/whl/cu118
pip install -e .
conda install matplotlib
pip install gradio

1-4. 创建 Web UI

复制代码
# webui.py
import torch
import torchaudio
import gradio as gr
from whisper_medusa import WhisperMedusaModel
from transformers import WhisperProcessor

# Load model and processor
model_name = "aiola/whisper-medusa-v1"
model = WhisperMedusaModel.from_pretrained(model_name)
processor = WhisperProcessor.from_pretrained(model_name)

# Set device
device = torch.device("cuda" if torch.cuda.is_available() else "cpu")
model = model.to(device)

# Constants
SAMPLING_RATE = 16000

def transcribe_audio(audio_file, language):
    # Load and preprocess audio
    input_speech, sr = torchaudio.load(audio_file)
    if input_speech.shape[0] > 1:  # If stereo, average the channels
        input_speech = input_speech.mean(dim=0, keepdim=True)
    if sr != SAMPLING_RATE:
        input_speech = torchaudio.transforms.Resample(sr, SAMPLING_RATE)(input_speech)
    
    # Process input
    input_features = processor(input_speech.squeeze(), return_tensors="pt", sampling_rate=SAMPLING_RATE).input_features
    input_features = input_features.to(device)
    
    # Generate transcription
    model_output = model.generate(
        input_features,
        language=language,
    )
    predict_ids = model_output[0]
    transcription = processor.decode(predict_ids, skip_special_tokens=True)
    
    return transcription

# Define Gradio interface
iface = gr.Interface(
    fn=transcribe_audio,
    inputs=[
        gr.Audio(type="filepath", label="Upload Audio"),
        gr.Dropdown(["en", "zh", "ja"], label="Select Language", value="en")
    ],
    outputs="text",
    title="Audio Transcription with Whisper Medusa",
    description="Upload an audio file and select the language to transcribe the audio to text."
)

# Launch the interface
iface.launch()

1-5. 启动 Web UI

复制代码
python webui.py

1-5. 访问 Web UI

使用浏览器访问 http://localhost:7860

相关推荐
明明真系叻5 分钟前
2025.4.20机器学习笔记:文献阅读
人工智能·笔记·机器学习
学术小八26 分钟前
2025年机电一体化、机器人与人工智能国际学术会议(MRAI 2025)
人工智能·机器人·机电
爱的叹息29 分钟前
关于 雷达(Radar) 的详细解析,涵盖其定义、工作原理、分类、关键技术、应用场景、挑战及未来趋势,结合实例帮助理解其核心概念
人工智能·分类·数据挖掘
许泽宇的技术分享32 分钟前
.NET MCP 文档
人工智能·.net
anscos1 小时前
Actran声源识别方法连载(二):薄膜模态表面振动识别
人工智能·算法·仿真软件·actran
-曾牛1 小时前
【LangChain4j快速入门】5分钟用Java玩转GPT-4o-mini,Spring Boot整合实战!| 附源码
java·开发语言·人工智能·spring boot·ai·chatgpt
token-go1 小时前
[特殊字符] KoalaAI 1.0.23 震撼升级:GPT-4.1免费畅享,AI革命触手可及!
人工智能
云卓SKYDROID1 小时前
无人机避障与目标识别技术分析!
人工智能·无人机·科普·高科技·云卓科技·激光避障
chuangfumao2 小时前
解读《人工智能指数报告 2025》:洞察 AI 发展新态势
人工智能·搜索引擎·百度
可爱の小公举2 小时前
自然语言处理(NLP)领域大图
人工智能·自然语言处理