⚡ ️ 基于slipper large-v2的70x实时转录批量推理 🪶 快速耳语 后端,对于beam_size=5的large-v2,需要<8GB gpu内存 🎯 使用wav2vec2对齐的精确单词级时间戳 👯♂️ 使用扬声器日记的多扬声器ASR pyannote-audio公司 (扬声器ID标签) 🗣️ VAD预处理,减少幻觉和配料,且WER不会退化
第1名 自我4d转录挑战 🏆 WhisperX公司 INTERSPEECH 2023验收 v3转录片段-句子:使用nltk sent_tokenize实现更好的字幕和日记化 v3发布,70x加速开源。 使用批量耳语 快速耳语 后端! v2发布,代码清理,导入耳语库VAD过滤现在默认打开,如本文所述。 掉纸 🎓👨🏫! 请参阅我们的 ArxiV预打印 有关WhisperX的基准测试和详细信息。 我们还引入了更高效的批处理推理,以*60-70倍的实时速度实现了大v2。
$git克隆 https://github.com/m-bain/helopX.git $cd耳语X $pip安装-e。
注释 截至2023年10月11日,有一个众所周知的问题,那就是在wheepX中使用pyannote/Seaker-Dialization-3.0的性能很慢。 这是因为faster-sleep和pyannote-audio 3.0.0之间存在依赖冲突。 请参阅 这个问题 了解更多详细信息和潜在的解决方法。
耳语示例/sample01.wav
样品01.mp4
示例_ hisper_og.mov
耳语示例/sample01.wav--型号large-v2--align_model WAV2VEC2_ASR_large_LV60K_960H--批次大小4
耳语示例/sample01.wav--型号large-v2--日记--highlight_words True
耳语示例/sample01.wav--compute_type int8
耳语--model large-v2--language de examples/sample_de_01.wav
示例_de_01_vis.mov
进口 耳语
进口 气相色谱法
装置 = “库达”
音频文件(_F) = “音频.mp3”
批处理大小 = 16 #GPU内存不足时减少
计算机类型 = “浮点16” #如果GPU内存不足,则更改为“int8”(可能会降低精确度)
#1。 用原始耳语录制(成批)
模型 = 耳语 。 加载模型(_M) ( “大v2” , 装置 , 计算机类型 = 计算机类型 ) #将模型保存到本地路径(可选)
#model_dir=“/path/”
#model=耳语x.load_model(“large-v2”,device,compute_type=计算类型,download_root=模型目录)
音频 = 耳语 。 加载音频(_A) ( 音频文件(_F) ) 结果 = 模型 。 转录 ( 音频 , 批处理大小 = 批处理大小 ) 打印 ( 结果 [ “段” ]) #对齐前
#如果GPU资源不足,则删除模型
#进口gc; gc.collect(); torch.cuda.empty_cache(); del模型
# 2. 对齐耳语输出
模型a , 元数据 = 耳语 。 加载对齐模型 ( 语言代码 = 结果 [ “语言” ], 装置 = 装置 ) 结果 = 耳语 。 排列 ( 结果 [ “段” ], 模型a , 元数据 , 音频 , 装置 , 返回char_alignments = False(错误) ) 打印 ( 结果 [ “段” ]) #对齐后
#如果GPU资源不足,则删除模型
#进口gc; gc.collect(); torch.cuda.empty_cache(); del模型a
# 3. 分配扬声器标签
日记_模型 = 耳语 。 Diarization管道 ( 使用验证令牌 = 您的现金代币 , 装置 = 装置 ) #添加扬声器的最小/最大数量(如果已知)
日记_段 = 日记_模型 ( 音频 ) #diarize_model(音频,最小扬声器=最小扬声器,最大扬声器=最大扬声器)
结果 = 耳语 。 指定说话人 ( 日记_段 , 结果 ) 打印 ( 日记_段 ) 打印 ( 结果 [ “段” ]) #段现在被分配了扬声器ID
减少批量,例如。 --批处理大小4 使用较小的ASR模型 --模型库 使用较轻的计算类型 --计算机类型int8
没有时间戳的转录。 为了启用单程批处理,执行耳语推理 --without_timestamps为True ,这确保了批次中每个样品有一个正向传递。 然而,这可能会导致默认耳语输出的差异。 与openai的缓冲转录不同,基于VAD的片段转录。在Wthe WhisperX论文中,我们表明这可以减少WER,并实现准确的批处理推断 --先决条件 设置为 False(错误) 默认情况下(减少幻觉)
对齐模型词典中不包含字符的成绩单单词,例如“2014”或“£13.60”无法对齐,因此没有给出时间。 耳语和耳语都不能很好地处理重叠语音 日记化远非完美 需要特定于语言的wav2vec2模型
-
多语言初始化 -
基于语言检测的自动对齐模型选择 -
Python使用 -
合并扬声器日记 -
模型刷新,用于低gpu内存资源 -
快速耳语后端 -
添加maxline等,请参见(openai的sleep-utils.py) -
句子级段(nltk工具箱) -
改进对齐逻辑 -
使用日记化和单词突出显示更新示例 -
Subtitle.ass输出<-将其恢复(在v3中删除) -
添加基准测试代码(用于spd/WER和分词的TEDLIUM) -
允许silero-vad作为备用vad选项 -
改进日记化(单词级)。 比最初想象的更难。。。
@文章 { bain2022helperx公司 , 标题 = { WhisperX:长格式音频的时间准确语音转录 } , 作者 = { 贝恩、马克斯和胡、杰桑和韩、腾达和齐瑟曼、安德鲁 } , 杂志 = { 2023年国际演讲 } , 年 = { 2023 } }