语言: 韩语
标签:
- 音频
- 语音识别
- 发音评估
许可证: apache-2.0
数据集:
- AI_Hub
评估指标:
- 1~5分制
小部件示例:
- 文本: "안녕하세요. 오늘 날씨가 좋습니다."
示例标题: 韩语句子样本
- 文本: "영어는 세계 공용어입니다."
示例标题: 另一个句子样本
管道标签: 音频分类
Whisper微调发音评分模型
该模型用于评估韩语发音质量。基于openai/whisper-small模型,使用韩国AI-Hub(https://www.aihub.or.kr/)的外国人韩语发音评估数据集进行微调。
模型描述
发音评分器接收音频输入及其对应文本转录,提供1至5分的韩语发音评分。该模型利用Whisper模型的编码器-解码器架构提取语音特征,并通过额外的线性层预测发音分数。
使用方法
使用本模型需遵循以下步骤:
- 安装必要库
- 加载模型和处理器
- 准备音频文件和文本转录
- 预测发音分数
详细使用示例如下:
import torch
import torchaudio
from transformers import WhisperProcessor, WhisperForConditionalGeneration
import torch.nn as nn
class Whisper发音评分器(nn.Module):
def __init__(self, 预训练模型):
super().__init__()
self.whisper = 预训练模型
self.评分头 = nn.Linear(self.whisper.config.d_model, 1)
def forward(self, 输入特征, 标签=None):
输出 = self.whisper(输入特征, labels=标签, output_hidden_states=True)
最后隐藏状态 = 输出.decoder_hidden_states[-1]
分数 = self.评分头(最后隐藏状态.mean(dim=1)).squeeze()
return 分数
def 加载模型(模型路径, 设备):
模型名称 = "openai/whisper-small"
处理器 = WhisperProcessor.from_pretrained(模型名称)
预训练模型 = WhisperForConditionalGeneration.from_pretrained(模型名称)
模型 = Whisper发音评分器(预训练模型).to(设备)
模型.load_state_dict(torch.load(模型路径, map_location=设备))
模型.eval()
return 模型, 处理器
def 预测发音分数(模型, 处理器, 音频路径, 转录文本, 设备):
音频, 采样率 = torchaudio.load(音频路径)
if 采样率 != 16000:
音频 = torchaudio.functional.resample(音频, 采样率, 16000)
输入特征 = 处理器(音频.squeeze().numpy(), sampling_rate=16000, return_tensors="pt").input_features.to(设备)
标签 = 处理器(text=转录文本, return_tensors="pt").input_ids.to(设备)
with torch.no_grad():
分数 = 模型(输入特征, 标签)
return 分数.item()
设备 = torch.device("cuda" if torch.cuda.is_available() else "cpu")
模型路径 = "模型文件路径.pth"
模型, 处理器 = 加载模型(模型路径, 设备)
音频路径 = "音频文件路径.wav"
转录文本 = "안녕하세요"
分数 = 预测发音分数(模型, 处理器, 音频路径, 转录文本, 设备)
print(f"预测发音分数: {分数:.2f}")