Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

中文开源语音大模型计划 #2097

Open
9 of 14 tasks
Tracked by #2142
xingchensong opened this issue Nov 1, 2023 · 50 comments
Open
9 of 14 tasks
Tracked by #2142

中文开源语音大模型计划 #2097

xingchensong opened this issue Nov 1, 2023 · 50 comments
Assignees

Comments

@xingchensong
Copy link
Member

xingchensong commented Nov 1, 2023

宗旨

  1. 毛主席说,没有调查就没有发言权,我们采访了很多开发者得出结论:对于有数据闭环和迭代需求的公司,微调是刚需。我们的宗旨是 人人都能快速方便地训练和部署语音大模型,这里突出一个 字,大模型的训练和部署,和小模型基本是两套不同方案,在 “微调是刚需” 的前提下,结合大模型的时代背景和趋势所向,如何方便快捷地 训练/魔改(微调)和 部署 语音大模型,会是即将到来时代的痛点,解决这个痛点,就是 next gen wenet 的任务,也即 wenet 3.0 的总目标。
  2. 数据、模型、代码全部都会开源开放,欢迎大家贡献,有数据的出数据,有意见的出意见,有机器的出机器,大家共创。

目标

  1. 中文开源语音大模型,开源的效果最好的中文模型,具备流式识别能力(其他语种做不做?做到什么程度?开放不设限,且做且分析)
  2. wepipe,积累一套从 [数据爬取](wecrawler)-> [数据处理](借助wesubtitle制作标注和将来的wedata过滤低质量数据)-> [大模型增量训练] 完整pipeline

Action

数据

训练

部署

  • int4量化,降低带宽需求
@robin1001
Copy link
Collaborator

目前该项目在很早期的筹备阶段,欢迎大家提需求、意见,也欢迎大家参与和贡献。

@Mddct
Copy link
Collaborator

Mddct commented Nov 3, 2023

还缺个vad 和 对齐 之类的工具

vad 可以用东哥推荐的 或者@robin1001
#2069 里边提到的vad 打算用什么方法
对齐可以用torchaudio最新的 align

0 mos 计算 snr

1 vad

2 align and segment

@robin1001
Copy link
Collaborator

还缺个vad 和 对齐 之类的工具

vad 可以用东哥推荐的 或者@robin1001 #2069 里边提到的vad 打算用什么方法 对齐可以用torchaudio最新的 align

稍后不齐链接

wenet cli 中也支持对齐了,是基于 CTC 的,并且会输出每个字的对齐置信度。VAD 可以用东哥推荐的或者自己做一个基于 CTC 的。

@xingchensong
Copy link
Member Author

xingchensong commented Nov 3, 2023

@robin1001
Copy link
Collaborator

看来也是基于 CTC 的。
image

@Mddct
Copy link
Collaborator

Mddct commented Nov 3, 2023

这个代码 和 ctc segmentation基本一个原理 不过实现上 meta开了个gpu版的

@robin1001
Copy link
Collaborator

robin1001 commented Nov 3, 2023

数据层面我们可以重点向国内的方言、少数民族语言、小语种做倾斜。

@Mddct
Copy link
Collaborator

Mddct commented Nov 4, 2023

some idea:

  • async save checkpoint

  • ema

  • PRNGKey (reproduce)

  • bfloat16

  • efficient subsampling : https://browse.arxiv.org/pdf/2309.12963.pdf

  • parallel conformer/transformer && mulqi query etc

  • dataset interator checkpoint

  • audio->cmvn/other mean/std ->augment->specaugment -> model forward....

  • model forward argument in dict or support *args, **kwargs

  • tokenizer like gpt2 tokenizer bbpe etc

  • load adapter

@Mddct
Copy link
Collaborator

Mddct commented Nov 7, 2023

@robin1001 @xingchensong @whiteshirt0429 openai/whisper#1762 whisper v3 开源了 是否可以考虑 支持这个的推理, 他看着有些粤语的方言 可以用用

@xingchensong
Copy link
Member Author

@robin1001 @xingchensong @whiteshirt0429 openai/whisper#1762 whisper v3 开源了 是否可以考虑 支持这个的推理, 他看着有些粤语的方言 可以用用

v3结构上和v2一样,所以一支百支 :)

@whiteshirt0429
Copy link
Collaborator

如何保证数据不包含低质量的tts数据,以及考虑高质量的tts数据来进行更好的覆盖,这两个事情都比较重要,现在网络上低质量tts数据太多了

@xingchensong
Copy link
Member Author

xingchensong commented Nov 8, 2023

这个whisperX集成了vad、force align、speaker diarization、timestamp。对制作数据应该比较有用

@Mddct
Copy link
Collaborator

Mddct commented Nov 9, 2023

如何保证数据不包含低质量的tts数据,以及考虑高质量的tts数据来进行更好的覆盖,这两个事情都比较重要,现在网络上低质量tts数据太多了

可以用声纹的方式, 提前找些常用角色(从原视频上着)

@xingchensong
Copy link
Member Author

如何保证数据不包含低质量的tts数据,以及考虑高质量的tts数据来进行更好的覆盖,这两个事情都比较重要,现在网络上低质量tts数据太多了

可以用声纹的方式, 提前找些常用角色(从原视频上着)

或者直接从各大厂的tts api合成一些?微软,火山,魔音工坊,合成的语音和真实语音来训个二分类模型?

@Mddct
Copy link
Collaborator

Mddct commented Nov 9, 2023

可以试试,需要考虑下 up主修音:比如加音乐这种,

@Mddct
Copy link
Collaborator

Mddct commented Nov 16, 2023

IO这块 #2107 基于tf data的io虽然性能很好, 但是对于使用者比较重(难), 而且大模型领域 用tfdata的基本是google等tensorflw/jax项目
huggingface dataset 值得试一试, tf的一些特性 比如 map filter shuffle 都支持,而且很多fintune库也用到了
之后会 尝试用下 写一版 看性能怎么样

ref:

@kobenaxie
Copy link
Contributor

kobenaxie commented Nov 17, 2023

IO这块 #2107 基于tf data的io虽然性能很好, 但是对于使用者比较重(难), 而且大模型领域 用tfdata的基本是google等tensorflw/jax项目 huggingface dataset 值得试一试, tf的一些特性 比如 map filter shuffle 都支持,而且很多fintune库也用到了 之后会 尝试用下 写一版 看性能怎么样

ref:

IO这块不知道streaming这个可不可以参考 https://github.com/mosaicml/streaming

@wsstriving
Copy link

如何保证数据不包含低质量的tts数据,以及考虑高质量的tts数据来进行更好的覆盖,这两个事情都比较重要,现在网络上低质量tts数据太多了

可以用声纹的方式, 提前找些常用角色(从原视频上着)

或者直接从各大厂的tts api合成一些?微软,火山,魔音工坊,合成的语音和真实语音来训个二分类模型?

DNSMos 可以快速的卡阈值的方法筛选一些数据出来,感觉还行

@Jackiexiao
Copy link

现在有没有比较好的语音数据处理的开源库?对于一些有伴奏的博客数据,用 UVR5 或字节 api 做人声分离也可以用来做TTS

@Slyne
Copy link
Collaborator

Slyne commented Dec 9, 2023

希望可以尽可能收集高质量video数据 多模态流式模型更需要
另外了解到Discretized speech input效果还挺好的,省磁盘空间和加速训练,也许可以在data pipeline这里加一下这个feature

@xingchensong
Copy link
Member Author

现在有没有比较好的语音数据处理的开源库?对于一些有伴奏的博客数据,用 UVR5 或字节 api 做人声分离也可以用来做TTS

有一些零散的,但是没看到搞成一套完整pipeline的,这也是想做wedata的初衷

@fclearner
Copy link
Contributor

数据层面我们可以重点向国内的方言、少数民族语言、小语种做倾斜。
方言部分,有个不成熟的想法,可以先基于这个网站的数据训练一个语种预测模型,再基于语种预测模型去筛选相关语种的方言数据,可行性待验证
https://zhongguoyuyan.cn/index

@Moonmore
Copy link

如何保证数据不包含低质量的tts数据,以及考虑高质量的tts数据来进行更好的覆盖,这两个事情都比较重要,现在网络上低质量tts数据太多了

我们之前尝试过DeepFakeDetection检测合成的数据,效果还挺好的,TTS的数据这个可以检测到。

@xingchensong
Copy link
Member Author

根据社区反馈,也要考虑带噪训练

@dahu1
Copy link

dahu1 commented Jan 11, 2024

根据社区反馈,也要考虑带噪训练

加噪训练属于强需求了,基本线上场景都要搞的,目前wenet的dataset/processor.py好像还不支持,我看wespeaker已经支持了,完全可以平替过来。

另外我看wespeaker里加的噪声还是musan,musan里面有个speech分类,其实里面并不是噪声,而是人声,这个可能干扰比较严重,musan的music分类里面有一些是带人声的音乐片段,个人认为也可能会对asr造成影响

相比之下,我发现 wham_noise 这个noise set好像要优秀很多,数量上也不错,仅供参考。当然开发者也可以根据自己的噪声数据来做增强。

@xingchensong
Copy link
Member Author

根据社区反馈,也要考虑带噪训练

加噪训练属于强需求了,基本线上场景都要搞的,目前wenet的dataset/processor.py好像还不支持,我看wespeaker已经支持了,完全可以平替过来。

另外我看wespeaker里加的噪声还是musan,musan里面有个speech分类,其实里面并不是噪声,而是人声,这个可能干扰比较严重,musan的music分类里面有一些是带人声的音乐片段,个人认为也可能会对asr造成影响

相比之下,我发现 wham_noise 这个noise set好像要优秀很多,数量上也不错,仅供参考。当然开发者也可以根据自己的噪声数据来做增强。

你有兴趣贡献个pr吗(把wespeaker的加噪挪过来)

@dahu1
Copy link

dahu1 commented Jan 11, 2024

你有兴趣贡献个pr吗(把wespeaker的加噪挪过来)

好的,我还没pr过,我学习一下怎么弄。。

@fclearner
Copy link
Contributor

你有兴趣贡献个pr吗(把wespeaker的加噪挪过来)

好的,我还没pr过,我学习一下怎么弄。。

wespeaker看了下是两种,混响和背噪,我这边试了短噪头尾padding也挺有效的,训练时候给个噪声token

@dahu1
Copy link

dahu1 commented Jan 11, 2024

你有兴趣贡献个pr吗(把wespeaker的加噪挪过来)

好的,我还没pr过,我学习一下怎么弄。。

wespeaker看了下是两种,混响和背噪,我这边试了短噪头尾padding也挺有效的,训练时候给个噪声token

是的,两个都有

@xingchensong
Copy link
Member Author

https://github.com/fishaudio/audio-preprocess 这个好像不错

@Ycdegithub
Copy link

请问目前针对语音大模型的技术方案有确定吗?是自监督+SFT还是类似whisper直接做半监督的训练。针对方案这一块各位大佬有什么看法吗?

@duj12
Copy link
Contributor

duj12 commented Feb 1, 2024

目前我做了一个数据自动切分、转写和筛选的工具 https://github.com/duj12/ASR-2Pass/blob/master/run_seg_asr_filter.sh (暂时支持中文和英文)大佬们可以提提意见。

输入:
只需要提供原始长音频/视频路径, 和最终处理后数据的保存路径。
输出:
处理好的短音频,和对应的文本等信息(kaldi-format)

流程:
-1. 进行文件格式转换。(一般而言不需要额外显式转换格式,因为whisper本身就用了ffmpeg读取输入)
0. 准备数据,去掉路径中的空格。

  1. 使用whisper-large-v3生成时间戳和一遍转写文本
  2. 根据whisper时间戳(每5个whisper片段保存一个segment)切分音频,得到每个segment的音频和对应文本。
  3. 整理kaldi格式数据,统计时长,只保留[0.5, 40]秒的音频。因为转写过程发现一般正常的whisper转写结果一个小片段大约2s, 有些转写错的结果片段时长会比较长。同时这些超长的segment也会影响后面paraformer的转写。
  4. 进行paraformer转写,对whisper转写结果正则作为label, 计算paraformer转写CER,取出CER<=5的数据
  5. 将4得到的音频,以及kaldi格式数据拷贝到目标文件夹。

关于数据格式:
支持一切ffmpeg支持的音视频格式。
最终默认导出成24k的16bit单通道wav文件。

关于音频切分:
之前做数据都是单独用VAD切分,后来试了用Paraformer时间戳模型+标点模型(在语义分割点切分),发现效果都不是很好:VAD切分位置不是很合理,时间戳+标点模型因为时间戳不准,切分得到的音频和文本对不上。
后来发现Whisper的片段时间戳非常准确,且片段分割点大多都在词边界上,索性直接把whisper的时间戳用来做切分参照。

关于转写:
一遍长音频用Whisper,目前还无法batch推理,取而代之用了多GPU多线程。
二遍对短音频用Parafomer,多GPU,batch推理,注意要用比较早期的modelscope和funasr版本。

关于数据筛选:
之前也试过添加信噪比估计进行筛选。后来发现信噪比计算非常耗时(且不准确),而且音频质量完全可以由识别准确率去反映。
这套流程的核心是:只要Whisper和Paraformer模型识别结果一致(CER<=5%),那么我们就认为这条短音频是可用的,这条数据就可以留下来

关于数据的使用
最终得到的数据是按照长音频名称(多级目录用_连接)分为多个文件夹,每个文件夹下是该条长音频切分得到的短音频。
筛选出来的数据可以直接拿来做弱标注的预训练。或者经过人工标注之后拿来做其他事情。可以支持的任务包括ASR,TTS,说话人识别(如果长音频说话人信息不确定,还需聚类得到说话人标签)等。

@xingchensong
Copy link
Member Author

关于数据筛选,可以考虑追加置信度这个衡量指标,一般置信度可以用ref里每个字的prob加权平均来表示,这个置信度可以和cer指标形成double check

@duj12
Copy link
Contributor

duj12 commented Feb 2, 2024

关于数据筛选,可以考虑追加置信度这个衡量指标,一般置信度可以用ref里每个字的prob加权平均来表示,这个置信度可以和cer指标形成double check

嗯,现在是输出了每句解码的分数的,但这个值目前还没用上。还有些细节也还需要打磨。

@Jackiexiao
Copy link

DNSMOS 可以用来筛选掉一些音质比较差的音频
https://github.com/microsoft/DNS-Challenge/tree/master/DNSMOS

python dnsmos_local.py -t C:\temp\SampleClips -o sample.csv
得到的 sample.csv 是一个评分表,oval raw 低于 1.5 的基本都比较差

@Jackiexiao
Copy link

VAD切分位置不是很合理 @duj12 为什么说 vad 切分位置不合理?我一般按静音超过 300ms 来切,不过有些场景(比如情感聊天,停顿时间是比较久)

@duj12
Copy link
Contributor

duj12 commented Feb 5, 2024

VAD切分位置不是很合理 @duj12 为什么说 vad 切分位置不合理?我一般按静音超过 300ms 来切,不过有些场景(比如情感聊天,停顿时间是比较久)

相对而言的吧,比较简单的数据(静音段比较明确,噪声比较少),VAD切分足够了。很多网络上爬下来的数据,单纯按照VAD静音位置去切分,有时候会把某些字、词切分开;有噪声的情况下VAD可能会出现切不开的问题(最大时长时才切分往往也会把字词等切分开)。
然后本身我这里是需要whisper转写的,索性就把whisper的时间戳也用上了,我实际使用下来,感觉结合whisper的时间戳得到的切分片段会更好一些。

@yangyyt
Copy link

yangyyt commented Mar 7, 2024

还缺个vad 和 对齐 之类的工具
vad 可以用东哥推荐的 或者@robin1001 #2069 里边提到的vad 打算用什么方法 对齐可以用torchaudio最新的 align
稍后不齐链接

wenet cli 中也支持对齐了,是基于 CTC 的,并且会输出每个字的对齐置信度。VAD 可以用东哥推荐的或者自己做一个基于 CTC 的。

wenet cli 对齐输出每个字的对齐置信度,有具体的使用说明吗

@zuowanbushiwo
Copy link

zuowanbushiwo commented Mar 11, 2024

如何保证数据不包含低质量的tts数据,以及考虑高质量的tts数据来进行更好的覆盖,这两个事情都比较重要,现在网络上低质量tts数据太多了

我们之前尝试过DeepFakeDetection检测合成的数据,效果还挺好的,TTS的数据这个可以检测到。

@Moonmore
你好,请问一下,这个怎么做的,有没有预训练模型?

@xingchensong
Copy link
Member Author

目前我做了一个数据自动切分、转写和筛选的工具 https://github.com/duj12/ASR-2Pass/blob/master/run_seg_asr_filter.sh (暂时支持中文和英文)大佬们可以提提意见。

输入: 只需要提供原始长音频/视频路径, 和最终处理后数据的保存路径。 输出: 处理好的短音频,和对应的文本等信息(kaldi-format)

流程: -1. 进行文件格式转换。(一般而言不需要额外显式转换格式,因为whisper本身就用了ffmpeg读取输入) 0. 准备数据,去掉路径中的空格。

  1. 使用whisper-large-v3生成时间戳和一遍转写文本
  2. 根据whisper时间戳(每5个whisper片段保存一个segment)切分音频,得到每个segment的音频和对应文本。
  3. 整理kaldi格式数据,统计时长,只保留[0.5, 40]秒的音频。因为转写过程发现一般正常的whisper转写结果一个小片段大约2s, 有些转写错的结果片段时长会比较长。同时这些超长的segment也会影响后面paraformer的转写。
  4. 进行paraformer转写,对whisper转写结果正则作为label, 计算paraformer转写CER,取出CER<=5的数据
  5. 将4得到的音频,以及kaldi格式数据拷贝到目标文件夹。

关于数据格式: 支持一切ffmpeg支持的音视频格式。 最终默认导出成24k的16bit单通道wav文件。

关于音频切分: 之前做数据都是单独用VAD切分,后来试了用Paraformer时间戳模型+标点模型(在语义分割点切分),发现效果都不是很好:VAD切分位置不是很合理,时间戳+标点模型因为时间戳不准,切分得到的音频和文本对不上。 后来发现Whisper的片段时间戳非常准确,且片段分割点大多都在词边界上,索性直接把whisper的时间戳用来做切分参照。

关于转写: 一遍长音频用Whisper,目前还无法batch推理,取而代之用了多GPU多线程。 二遍对短音频用Parafomer,多GPU,batch推理,注意要用比较早期的modelscope和funasr版本。

关于数据筛选: 之前也试过添加信噪比估计进行筛选。后来发现信噪比计算非常耗时(且不准确),而且音频质量完全可以由识别准确率去反映。 这套流程的核心是:只要Whisper和Paraformer模型识别结果一致(CER<=5%),那么我们就认为这条短音频是可用的,这条数据就可以留下来

关于数据的使用 最终得到的数据是按照长音频名称(多级目录用_连接)分为多个文件夹,每个文件夹下是该条长音频切分得到的短音频。 筛选出来的数据可以直接拿来做弱标注的预训练。或者经过人工标注之后拿来做其他事情。可以支持的任务包括ASR,TTS,说话人识别(如果长音频说话人信息不确定,还需聚类得到说话人标签)等。

对了师兄,可以考虑下过滤策略加一条这个,经过验证在wenetspeech上效果很好。

考虑到whisper用了大量视频字幕训练,删除错误肯定不会少,所以这个策略大概率会很有效。

也即删选策略变成:

  • Whisper和Paraformer模型识别结果一致(CER<=5%)
  • Whisper和Paraformer模型识别结果cer>5%但是,两者之间只存在删除错误,使用paraformer的识别结果当抄本

@accum-dai
Copy link

如何保证数据不包含低质量的tts数据,以及考虑高质量的tts数据来进行更好的覆盖,这两个事情都比较重要,现在网络上低质量tts数据太多了

对于TTS数据质量,一方面可以考虑使用一些工具对低质量数据进行筛选,比如使用wada估计snr,另一方面,可以使用speech restoration的模型对质量不太好的数据进行修复,比如借助于这个工具https://github.com/resemble-ai/resemble-enhance/

@Moonmore
Copy link

如何保证数据不包含低质量的tts数据,以及考虑高质量的tts数据来进行更好的覆盖,这两个事情都比较重要,现在网络上低质量tts数据太多了

我们之前尝试过DeepFakeDetection检测合成的数据,效果还挺好的,TTS的数据这个可以检测到。

@Moonmore 你好,请问一下,这个怎么做的,有没有预训练模型?

hi,没有特别好用的模型。我这边是针对我们这边的合成模型额外训练的。具体的可以翻下deep fake 相关的比赛论文,模型结构比较简单的。

@Rasin-wu
Copy link

目前我做了一个数据自动切分、转写和筛选的工具 https://github.com/duj12/ASR-2Pass/blob/master/run_seg_asr_filter.sh (暂时支持中文和英文)大佬们可以提提意见。
输入: 只需要提供原始长音频/视频路径, 和最终处理后数据的保存路径。 输出: 处理好的短音频,和对应的文本等信息(kaldi-format)
流程: -1. 进行文件格式转换。(一般而言不需要额外显式转换格式,因为whisper本身就用了ffmpeg读取输入) 0. 准备数据,去掉路径中的空格。

  1. 使用whisper-large-v3生成时间戳和一遍转写文本
  2. 根据whisper时间戳(每5个whisper片段保存一个segment)切分音频,得到每个segment的音频和对应文本。
  3. 整理kaldi格式数据,统计时长,只保留[0.5, 40]秒的音频。因为转写过程发现一般正常的whisper转写结果一个小片段大约2s, 有些转写错的结果片段时长会比较长。同时这些超长的segment也会影响后面paraformer的转写。
  4. 进行paraformer转写,对whisper转写结果正则作为label, 计算paraformer转写CER,取出CER<=5的数据
  5. 将4得到的音频,以及kaldi格式数据拷贝到目标文件夹。

关于数据格式: 支持一切ffmpeg支持的音视频格式。 最终默认导出成24k的16bit单通道wav文件。
关于音频切分: 之前做数据都是单独用VAD切分,后来试了用Paraformer时间戳模型+标点模型(在语义分割点切分),发现效果都不是很好:VAD切分位置不是很合理,时间戳+标点模型因为时间戳不准,切分得到的音频和文本对不上。 后来发现Whisper的片段时间戳非常准确,且片段分割点大多都在词边界上,索性直接把whisper的时间戳用来做切分参照。
关于转写: 一遍长音频用Whisper,目前还无法batch推理,取而代之用了多GPU多线程。 二遍对短音频用Parafomer,多GPU,batch推理,注意要用比较早期的modelscope和funasr版本。
关于数据筛选: 之前也试过添加信噪比估计进行筛选。后来发现信噪比计算非常耗时(且不准确),而且音频质量完全可以由识别准确率去反映。 这套流程的核心是:只要Whisper和Paraformer模型识别结果一致(CER<=5%),那么我们就认为这条短音频是可用的,这条数据就可以留下来
关于数据的使用 最终得到的数据是按照长音频名称(多级目录用_连接)分为多个文件夹,每个文件夹下是该条长音频切分得到的短音频。 筛选出来的数据可以直接拿来做弱标注的预训练。或者经过人工标注之后拿来做其他事情。可以支持的任务包括ASR,TTS,说话人识别(如果长音频说话人信息不确定,还需聚类得到说话人标签)等。

对了师兄,可以考虑下过滤策略加一条这个,经过验证在wenetspeech上效果很好。

考虑到whisper用了大量视频字幕训练,删除错误肯定不会少,所以这个策略大概率会很有效。

也即删选策略变成:

  • Whisper和Paraformer模型识别结果一致(CER<=5%)
  • Whisper和Paraformer模型识别结果cer>5%但是,两者之间只存在删除错误,使用paraformer的识别结果当抄本

是不是也可以考虑使用比较大的语言模型做PPL的判断,可以做些前筛选之类的。
最好重点考虑下字幕的利用,有不少视频包含大量人工标注的字幕文件。

@wwfcnu
Copy link

wwfcnu commented Apr 26, 2024

关于数据筛选,可以考虑追加置信度这个衡量指标,一般置信度可以用ref里每个字的prob加权平均来表示,这个置信度可以和cer指标形成double check

嗯,现在是输出了每句解码的分数的,但这个值目前还没用上。还有些细节也还需要打磨。

解码分数是whisper输出的吗,paraformer应该没有解码分数

@Mddct
Copy link
Collaborator

Mddct commented Apr 26, 2024

有的 wenet里边实现了 可以参考下

@wwfcnu
Copy link

wwfcnu commented Apr 26, 2024

VAD切分位置不是很合理 @duj12 为什么说 vad 切分位置不合理?我一般按静音超过 300ms 来切,不过有些场景(比如情感聊天,停顿时间是比较久)

相对而言的吧,比较简单的数据(静音段比较明确,噪声比较少),VAD切分足够了。很多网络上爬下来的数据,单纯按照VAD静音位置去切分,有时候会把某些字、词切分开;有噪声的情况下VAD可能会出现切不开的问题(最大时长时才切分往往也会把字词等切分开)。 然后本身我这里是需要whisper转写的,索性就把whisper的时间戳也用上了,我实际使用下来,感觉结合whisper的时间戳得到的切分片段会更好一些。

请问,whisper的时间戳可以指定最大的切分长度吗

@duj12
Copy link
Contributor

duj12 commented Apr 26, 2024

VAD切分位置不是很合理 @duj12 为什么说 vad 切分位置不合理?我一般按静音超过 300ms 来切,不过有些场景(比如情感聊天,停顿时间是比较久)

相对而言的吧,比较简单的数据(静音段比较明确,噪声比较少),VAD切分足够了。很多网络上爬下来的数据,单纯按照VAD静音位置去切分,有时候会把某些字、词切分开;有噪声的情况下VAD可能会出现切不开的问题(最大时长时才切分往往也会把字词等切分开)。 然后本身我这里是需要whisper转写的,索性就把whisper的时间戳也用上了,我实际使用下来,感觉结合whisper的时间戳得到的切分片段会更好一些。

请问,whisper的时间戳可以指定最大的切分长度吗

应该不能指定,不过它解码最大长度是30s一个片段,所以一小段最长也就是30s. 我之前合并时间戳有问题可能会导致一个分段超过30s。现在指定累积片段长度超过10s就切分一次,得到的分段就比较合理了。

@MrSupW MrSupW unpinned this issue May 13, 2024
@xingchensong xingchensong pinned this issue May 16, 2024
@wwfcnu
Copy link

wwfcnu commented Jul 1, 2024

获取高质量的转写文本,可以通过Noise student training这种方式吗?而不是两方引擎通过wer来筛选

@xingchensong
Copy link
Member Author

获取高质量的转写文本,可以通过Noise student training这种方式吗?而不是两方引擎通过wer来筛选

可以,但是nst太麻烦

@popydog
Copy link

popydog commented Aug 15, 2024

请问一下,我只想识别某些字. 例如几个汉字,像大家,你好这样. 怎样获得很小的final.zip呢? 预训练的模型很好,但是对我来说太大了

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests