语言:
- 英语
- 印地语
标签:
- 音频
- 自动语音识别
- whisper-event
- PyTorch
推理: true
模型索引:
- 名称: Whisper-Hindi2Hinglish-Swift
结果:
- 任务:
类型: 自动语音识别
名称: 自动语音识别
数据集:
名称: google/fleurs
类型: google/fleurs
配置: hi_in
分割: test
指标:
- 类型: 词错误率(WER)
值: 35.0888
名称: WER
- 任务:
类型: 自动语音识别
名称: 自动语音识别
数据集:
名称: mozilla-foundation/common_voice_20_0
类型: mozilla-foundation/common_voice_20_0
配置: hi
分割: test
指标:
- 类型: 词错误率(WER)
值: 38.6549
名称: WER
- 任务:
类型: 自动语音识别
名称: 自动语音识别
数据集:
名称: Indic-Voices
类型: Indic-Voices
配置: hi
分割: test
指标:
- 类型: 词错误率(WER)
值: 65.2147
名称: WER
小部件:
- 音频源: audios/f89b6428-c58a-4355-ad63-0752b69f2d30.wav
输出:
文本: vah bas din mein kitni baar chalti hai?
- 音频源: audios/09cf2547-9d09-4914-926a-cf2043549c15.wav
输出:
文本: >-
Salmaan ki image se prabhaavit hote hain is company ke share bhaav jaane
kaise?
- 音频源: audios/6f7df89f-91a7-4cbd-be43-af7bce71a34b.wav
输出:
文本: vah roya aur aur roya.
- 音频源: audios/969bede5-d816-461b-9bf2-bd115e098439.wav
输出:
文本: helmet na pahnne se bhaarat mein har gante hoti hai chaar logon ki maut.
- 音频源: audios/cef43941-72c9-4d28-88dd-cb62808dc056.wav
输出:
文本: usne mujhe chithi ka javaab na dene ke lie daanta.
- 音频源: audios/b27d49fe-fced-4a17-9887-7bfbc5d4a899.wav
输出:
文本: puraana shahar divaaron se ghera hua hai.
- 音频源: audios/common_voice_hi_23796065.mp3
示例标题: 语音示例1
- 音频源: audios/common_voice_hi_41666099.mp3
示例标题: 语音示例2
- 音频源: audios/common_voice_hi_41429198.mp3
示例标题: 语音示例3
- 音频源: audios/common_voice_hi_41429259.mp3
示例标题: 语音示例4
- 音频源: audios/common_voice_hi_40904697.mp3
示例标题: 语音示例5
管道标签: 自动语音识别
许可证: apache-2.0
指标:
- 词错误率(WER)
基础模型:
- openai/whisper-base
库名称: transformers
Whisper-Hindi2Hinglish-Swift:
目录:
关键特性:
- 印地英语混合语言: 新增将音频转录为口语化印地英语混合文本的能力,减少语法错误概率
- Whisper架构: 基于Whisper架构,便于使用transformers包
- 幻觉抑制: 最小化转录幻觉以提升准确率
- 性能提升: 在基准测试数据集上相比预训练模型平均性能提升约57%
训练:
数据:
- 时长: 总计使用约550小时带印度口音噪声的印地语数据进行微调
- 采集: 由于缺乏现成的印地英语ASR数据集,采用特制专有数据集
- 标注: 通过SOTA模型预标注后经人工修正转录文本
- 质量: 重点采集含噪声数据,因模型目标使用场景为背景噪声普遍的印度环境
- 处理: 确保所有音频分段为<30秒片段,每段最多包含2个说话人。未进行其他处理以保持原始数据质量
微调:
- 新型训练器架构: 编写定制训练器实现高效监督微调,含自定义回调函数增强训练过程可观测性
- 动态层冻结技术: 通过预训练模型在训练数据子集上推理识别最活跃层,保持这些层解冻状态同时冻结其他层,实现快速收敛和高效微调
- Deepspeed集成: 使用Deepspeed加速和优化训练过程
性能概览
定性性能对比
音频 |
Whisper基础版 |
Whisper-Hindi2Hinglish-Swift |
|
乌尔都语错误转录 |
vah bas din mein kitni baar chalti hai? |
|
乌尔都语错误转录 |
salmaan ki image se prabhaavit hote hain is company ke share bhaav jaane kaise? |
|
乌尔都语错误转录 |
vah roya aur aur roya. |
|
乌尔都语错误转录 |
helmet na pahnne se bhaarat mein har gante hoti hai chaar logon ki maut. |
|
乌尔都语错误转录 |
usne mujhe chithi ka javaab na dene ke lie daanta. |
|
乌尔都语错误转录 |
puraana shahar divaaron se ghera hua hai. |
定量性能对比
注意:
- 下表WER分数为本模型生成的印地英语文本与原版whisper模型的对比结果
- 查看本模型与其他SOTA模型的实际性能对比,请访问语音转文本竞技场
使用方式:
使用Transformers库
pip install --upgrade transformers
import torch
from transformers import AutoModelForSpeechSeq2Seq, AutoProcessor, pipeline
from datasets import load_dataset
device = "cuda:0" if torch.cuda.is_available() else "cpu"
torch_dtype = torch.float16 if torch.cuda.is_available() else torch.float32
model_id = "Oriserve/Whisper-Hindi2Hinglish-Swift"
model = AutoModelForSpeechSeq2Seq.from_pretrained(
model_id,
torch_dtype=torch_dtype,
low_cpu_mem_usage=True,
use_safetensors=True
)
model.to(device)
processor = AutoProcessor.from_pretrained(model_id)
pipe = pipeline(
"automatic-speech-recognition",
model=model,
tokenizer=processor.tokenizer,
feature_extractor=processor.feature_extractor,
torch_dtype=torch_dtype,
device=device,
generate_kwargs={
"task": "transcribe",
"language": "en"
}
)
sample = "sample.wav"
result = pipe(sample)
print(result["text"])
使用OpenAI Whisper模块
pip install -U openai-whisper tqdm
- 将huggingface检查点转换为pytorch模型
import torch
from transformers import AutoModelForSpeechSeq2Seq
import re
from tqdm import tqdm
from collections import OrderedDict
import json
with open('convert_hf2openai.json', 'r') as f:
reverse_translation = json.load(f)
reverse_translation = OrderedDict(reverse_translation)
def save_model(model, save_path):
def reverse_translate(current_param):
for pattern, repl in reverse_translation.items():
if re.match(pattern, current_param):
return re.sub(pattern, repl, current_param)
config = model.config
model_dims = {
"n_mels": config.num_mel_bins,
"n_vocab": config.vocab_size,
"n_audio_ctx": config.max_source_positions,
"n_audio_state": config.d_model,
"n_audio_head": config.encoder_attention_heads,
"n_audio_layer": config.encoder_layers,
"n_text_ctx": config.max_target_positions,
"n_text_state": config.d_model,
"n_text_head": config.decoder_attention_heads