Whisper 介绍

简介

Whisper 是一种自动语音识别 (ASR) 系统,根据从网络收集的 680,000 小时多语言和多任务监督数据进行训练。结果表明,使用这种大规模且多样化的数据集,能够提升模型在口音、背景噪音及专业术语方面的稳健性。此外,该模型还支持多种语言的转录,以及将这些语言翻译成英语 。

摘自OpenAI官网

Whisper官方地址

GitHub源码地址

核心是一个Encoder–Decoder Transformer模型

  • Encoder:处理 Mel-Spectrogram

  • Decoder:自回归生成文本 token

本质是一个 语音版 Seq2Seq Transformer

Whisper 核心架构图

流程

  1. 输入:音频 → Mel 频谱

  2. Encoder:把语音变成高维表示

  3. Decoder

    • 接收一串 特殊 token(Prompt)

    • 决定做什么任务

这些 token 包括:

  • 语言(<|ko|>

  • 任务(<|transcribe|> / <|translate|>

  • 是否输出时间戳

同一个模型,靠 token 控制:

  • 语音识别

  • 语音翻译

  • 语言识别

  • 时间对齐

Whisper 部署

Whisper 依赖安装

conda create -n whisper_demo python==3.9

conda activate whisper_demo

conda install ffmpeg -c conda-forge  

pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu118 

# 注意自己GPU的CUDA版本,若安装较慢推荐使用阿里源或者清华源

Whisper 安装

pip install -U openai-whisper # pip库安装

pip install git+https://github.com/openai/whisper.git  # git安装

# pip库安装与git安装 二选一即可

# 若之前已经安装Whisper,可以使用以下命令更新至最新版本
pip install --upgrade --no-deps --force-reinstall git+https://github.com/openai/whisper.git

Whisper 模型参数

Multilingual model 为官方提供的不同预训练模型,可以根据自己需要进行选择(注意VRAM适配)

Whisper 终端运行

# 使用 turbo 模型转录音频文件中的语言,--model 指定模型
whisper audio.flac audio.mp3 audio.wav --model turbo

# 转录包含非英语语音的音频文件,-language 可以指定语言
whisper japanese.wav --language Korean

# 要将语音翻译成英语,使用 --task translate
whisper japanese.wav --model medium --language Japanese --task translate

# 注意:默认设置(turbo模型)适用于英语转写任务。但需注意,turbo模型未针对翻译任务进行训练。若需将非英语语音翻译为英语,请使用多语言模型(tiny、base、small、medium、large)替代turbo模型。

更多参数选项查看

whisper --help

Whisper 转录 Python内部实现

import whisper

model = whisper.load_model("small")
result = model.transcribe("demo/Korean_demo1_11s.mp3")
print(result["text"])

韩语转录demo

Korean转录

(whisper) PS D:\A-Study\PythonFiles\LargeModel> whisper demo/Korean_demo1_11s.mp3 --model small --language Korean                 
[00:00.000 --> 00:04.200]  안녕하세요. 음성 서비스를 제공해 드릴 수 있어서
[00:04.200 --> 00:11.600]  기쁩니다. 마음에 드시는 목소리를 선택하시면 함께 멋진 음성 제작을 시작해 보도록 하겠습니다.

Korean 转录 + 翻译为英文

(whisper) PS D:\A-Study\PythonFiles\LargeModel> whisper demo/Korean_demo1_11s.mp3 --model small --language Korean --task translate
[00:00.000 --> 00:05.560]  Hello, I'm happy to be able to provide voice service.
[00:05.560 --> 00:11.600]  If you choose your favorite voice, we will start making great voice.

运行同时会生成文件保存转录内容

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐