Wav2vecbert2 Filledpause
W
Wav2vecbert2 Filledpause
由 classla 开发
用于对音频中20毫秒的帧进行分类,判断是否存在填充停顿(如'eee'、'errm'等)的模型
下载量 4,290
发布时间 : 8/28/2024
模型简介
本模型基于facebook/w2v-bert-2.0基础模型训练,专门用于检测语音中的填充停顿现象。
模型特点
多语言支持
支持斯洛文尼亚语、克罗地亚语、塞尔维亚语、捷克语和波兰语五种语言的填充停顿检测
高精度检测
在ROG语料库上达到0.968的F1值,表现出色
智能后处理
通过剔除首尾短片段等后处理方式,显著提升在ParlaSpeech语料库上的表现
模型能力
音频帧分类
填充停顿检测
多语言语音分析
使用案例
语音处理
语音转写预处理
在语音转写前识别并标记填充停顿,提高转写准确性
减少转写结果中的非语义内容
语音质量分析
分析演讲或对话中的填充停顿频率,评估口语流畅度
提供量化指标用于演讲训练或语言学习
🚀 填充停顿的帧分类模型
本模型可基于填充停顿(如 “eee”、“errm” 等)的存在情况,对音频中每个 20 毫秒的帧进行分类。
🚀 快速开始
此模型用于填充停顿的帧分类,通过对音频帧的分析判断是否存在填充停顿。
✨ 主要特性
- 支持斯洛文尼亚语(sl)、克罗地亚语(hr)、塞尔维亚语(sr)、捷克语(cs)和波兰语(pl)。
- 基于
facebook/w2v-bert-2.0
基础模型。 - 适用于音频分类任务。
- 使用 F1、召回率和精确率作为评估指标。
属性 | 详情 |
---|---|
模型类型 | 填充停顿的帧分类模型 |
训练数据 | 基于人类标注的斯洛文尼亚语语音语料库 ROG - Artur |
📦 安装指南
文档中未提及安装相关内容,故跳过此章节。
💻 使用示例
基础用法
from transformers import AutoFeatureExtractor, Wav2Vec2BertForAudioFrameClassification
from datasets import Dataset, Audio
import torch
import numpy as np
from pathlib import Path
device = torch.device("cuda")
model_name = "classla/wav2vecbert2-filledPause"
feature_extractor = AutoFeatureExtractor.from_pretrained(model_name)
model = Wav2Vec2BertForAudioFrameClassification.from_pretrained(model_name).to(device)
ds = Dataset.from_dict(
{
"audio": [
"/cache/peterr/mezzanine_resources/filled_pauses/data/dev/Iriss-J-Gvecg-P500001-avd_2082.293_2112.194.wav"
],
}
).cast_column("audio", Audio(sampling_rate=16_000, mono=True))
def frames_to_intervals(
frames: list[int],
drop_short=True,
drop_initial=True,
drop_final=True,
short_cutoff_s=0.08,
) -> list[tuple[float]]:
"""Transforms a list of ones or zeros, corresponding to annotations on frame
levels, to a list of intervals ([start second, end second]).
Allows for additional filtering on duration (false positives are often
short) and start times (false positives starting at 0.0 are often an
artifact of poor segmentation).
:param list[int] frames: Input frame labels
:param bool drop_short: Drop everything shorter than short_cutoff_s,
defaults to True
:param bool drop_initial: Drop predictions starting at 0.0, defaults to True
:param bool drop_final: Drop predictions ending at audio end, defaults to True
:param float short_cutoff_s: Duration in seconds of shortest allowable
prediction, defaults to 0.08
:return list[tuple[float]]: List of intervals [start_s, end_s]
"""
from itertools import pairwise
import pandas as pd
results = []
ndf = pd.DataFrame(
data={
"time_s": [0.020 * i for i in range(len(frames))],
"frames": frames,
}
)
ndf = ndf.dropna()
indices_of_change = ndf.frames.diff()[ndf.frames.diff() != 0].index.values
for si, ei in pairwise(indices_of_change):
if ndf.loc[si : ei - 1, "frames"].mode()[0] == 0:
pass
else:
results.append(
(
round(ndf.loc[si, "time_s"], 3),
round(ndf.loc[ei, "time_s"], 3),
)
)
if drop_short and (len(results) > 0):
results = [i for i in results if (i[1] - i[0] >= short_cutoff_s)]
if drop_initial and (len(results) > 0):
results = [i for i in results if i[0] != 0.0]
if drop_final and (len(results) > 0):
results = [i for i in results if i[1] != 0.02 * len(frames)]
return results
def evaluator(chunks):
sampling_rate = chunks["audio"][0]["sampling_rate"]
with torch.no_grad():
inputs = feature_extractor(
[i["array"] for i in chunks["audio"]],
return_tensors="pt",
sampling_rate=sampling_rate,
).to(device)
logits = model(**inputs).logits
y_pred = np.array(logits.cpu()).argmax(axis=-1)
intervals = [frames_to_intervals(i) for i in y_pred]
return {"y_pred": y_pred.tolist(), "intervals": intervals}
ds = ds.map(evaluator, batched=True)
print(ds["y_pred"][0])
# Prints a list of 20ms frames: [0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,0....]
# with 0 indicating no filled pause detected in that frame
print(ds["intervals"][0])
# Prints the identified intervals as a list of [start_s, ends_s]:
# [[0.08, 0.28 ], ...]
📚 详细文档
训练数据
模型在人类标注的斯洛文尼亚语语音语料库 ROG - Artur 上进行训练。训练集的录音被分割成长度最多为 30 秒的片段。
评估
尽管模型的输出是一系列表示 20 毫秒帧的 0 或 1,但评估是在事件级别进行的;连续输出为 1 的片段会被合并为一个事件。当真实事件和预测事件部分重叠时,将其计为真阳性。我们报告了正类的精确率、召回率和 F1 分数。
ROG 语料库评估
后处理 | 召回率 | 精确率 | F1 分数 |
---|---|---|---|
无 | 0.981 | 0.955 | 0.968 |
ParlaSpeech 语料库评估
对于 ParlaSpeech 集合 中的每种语言,人工标注员对 400 个实例进行了采样和标注。
由于 ParlaSpeech 语料库太大,无法像 ROG 语料库那样进行手动分割,因此在推理时观察到了一些失败模式。研究发现,后处理可以改善结果。观察到误报是由不恰当的音频分割引起的,因此禁用在音频开始处开始或在音频结束处结束的预测可能会有帮助。另一种失败模式是预测出非常短的事件,因此可以安全地忽略非常短的预测。
添加后处理后,模型达到了以下指标:
语言 | 后处理方式 | 召回率 | 精确率 | F1 分数 |
---|---|---|---|---|
捷克语(CZ) | 去除短的起始和结束预测 | 0.889 | 0.859 | 0.874 |
克罗地亚语(HR) | 去除短的起始和结束预测 | 0.94 | 0.887 | 0.913 |
波兰语(PL) | 去除短的起始和结束预测 | 0.903 | 0.947 | 0.924 |
塞尔维亚语(RS) | 去除短的起始和结束预测 | 0.966 | 0.915 | 0.94 |
有关后处理的详细信息,请参阅上述代码片段中的 frames_to_intervals
函数。
🔧 技术细节
本模型基于 facebook/w2v-bert-2.0
基础模型进行训练,通过对音频帧的特征提取和分类,实现填充停顿的检测。在评估时,将连续的正预测合并为事件,并使用后处理方法提高性能。
📄 许可证
本模型使用 Apache - 2.0 许可证。
📖 引用
暂未提供,敬请期待。
Mms Lid 126
基于Facebook大规模多语言语音项目微调的语言识别模型,支持126种语言的音频分类
音频分类
Transformers 支持多种语言

M
facebook
2.1M
26
Wav2vec2 Base Finetuned Speech Commands V0.02
Apache-2.0
该模型是基于facebook/wav2vec2-base在speech_commands数据集上微调的语音命令识别模型,准确率达97.59%。
音频分类
Transformers

W
0xb1
1.2M
0
Whisper Medium Fleurs Lang Id
Apache-2.0
基于OpenAI Whisper-medium微调的语音语种识别模型,在FLEURS数据集上达到88.05%准确率
音频分类
Transformers

W
sanchit-gandhi
590.30k
14
Wav2vec2 Large Robust 12 Ft Emotion Msp Dim
该模型通过对Wav2Vec2-Large-Robust进行微调训练,用于语音情感识别,输出唤醒度、支配度和效价三个维度的预测值。
音频分类
Transformers 英语

W
audeering
394.51k
109
Lang Id Voxlingua107 Ecapa
Apache-2.0
基于SpeechBrain框架和ECAPA-TDNN架构的语音语言识别模型,支持107种语言的识别和语音嵌入向量提取。
音频分类
PyTorch 支持多种语言
L
speechbrain
330.01k
112
Ast Finetuned Audioset 10 10 0.4593
Bsd-3-clause
音频频谱图变换器(AST)是基于AudioSet微调的模型,将音频转换为频谱图后应用视觉变换器进行音频分类。
音频分类
Transformers

A
MIT
308.88k
311
Whisper Small Ft Common Language Id
Apache-2.0
基于openai/whisper-small微调的通用语言识别模型,在评估集上准确率达88.6%
音频分类
Transformers

W
sanchit-gandhi
256.20k
2
Emotion Recognition Wav2vec2 IEMOCAP
Apache-2.0
使用微调的wav2vec2模型进行语音情感识别,在IEMOCAP数据集上训练
音频分类
PyTorch 英语
E
speechbrain
237.65k
131
Ast Finetuned Audioset 14 14 0.443
Bsd-3-clause
基于AudioSet数据集微调的音频频谱图变换器,将音频转换为频谱图后使用视觉变换器架构处理,在音频分类任务中表现优异。
音频分类
Transformers

A
MIT
194.20k
5
Wav2vec2 Large Xlsr 53 Gender Recognition Librispeech
Apache-2.0
基于Librispeech-clean-100数据集微调的性别识别模型,在测试集上F1分数达0.9993
音频分类
Transformers

W
alefiury
182.33k
42
精选推荐AI模型
Llama 3 Typhoon V1.5x 8b Instruct
专为泰语设计的80亿参数指令模型,性能媲美GPT-3.5-turbo,优化了应用场景、检索增强生成、受限生成和推理任务
大型语言模型
Transformers 支持多种语言

L
scb10x
3,269
16
Cadet Tiny
Openrail
Cadet-Tiny是一个基于SODA数据集训练的超小型对话模型,专为边缘设备推理设计,体积仅为Cosmo-3B模型的2%左右。
对话系统
Transformers 英语

C
ToddGoldfarb
2,691
6
Roberta Base Chinese Extractive Qa
基于RoBERTa架构的中文抽取式问答模型,适用于从给定文本中提取答案的任务。
问答系统 中文
R
uer
2,694
98