ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

Transformers 语音分离实战:会议录音里拆出每个人的清晰人声

Transformers 语音分离实战:会议录音里拆出每个人的清晰人声 Transformers 语音分离实战会议录音里拆出每个人的清晰人声【免费下载链接】transformers Transformers: the model-definition framework for state-of-the-art machine learning models in text, vision, audio, and multimodal models, for both inference and training.项目地址: https://gitcode.com/GitHub_Trending/tra/transformers三人会议的录音转成字幕A 的话混进了 B 的段落抢话处乱成一锅粥播客后期又想把嘉宾的音轨单独拎出来。Transformers 语音分离干的就是这事一段混合录音进多路独立人声出会议录音转写、多人对话人声提取都能接。进去一段出来几段分离链路长什么样声源分离Source Separation不玄乎就是把叠在一起的波形拆回 N 路互不干扰的音轨。Transformers 把特征提取、模型推理、结果切分全部封装进 pipeline你只管喂音频和收结果。返回结果是个字典separated_audio 字段里按说话人顺序排好每路波形长度对应人数。每路都是独立音频可以直接落盘、单独精修或者整条喂给语音识别。想顺完整流程的话examples/pytorch/speech-recognition/ 目录里有从模型加载到音频导出的参考脚本。选模型实时和保真怎么选可跑的分离模型不止一个选型就看两件事延迟要低还是听感要好。模型取向适用场景速度体感Conv-TasNet纯卷积、端到端延迟低通话链路、实时场景快60 秒音频不到 10 秒出SepFormer基于 Transformer 架构保真度取向会议、播客等离线精修慢一些质量优先Whisper-Sep分离与识别绑定的多任务模型想一步拿到转写结果居中没有实时压力就默认 SepFormer 系要嵌进实时通话再回头看 Conv-TasNet。说话人超过两人时优先挑在多人数据集上训过的权重。最小可运行示例十行代码拆出各路人声环境一句话带过clone 仓库装好 transformers 本体加 soundfile读 wav 用示例目录 requirements.txt 里的依赖也都备齐了。git clone https://gitcode.com/GitHub_Trending/tra/transformers cd transformers pip install -r examples/pytorch/speech-recognition/requirements.txt核心四步加载分离 pipeline → 读入混合 wav → 跑一遍 → 每路存盘。from transformers import pipeline import soundfile as sf separator pipeline(audio-source-separation, modelfacebook/sepformer-whamr) mixed, sample_rate sf.read(mixed_dialogue.wav) result separator(mixed) for i, track in enumerate(result[separated_audio]): sf.write(fspeaker_{i 1}.wav, track, sample_rate)跑完工作目录里会多出 speaker_1.wav、speaker_2.wav……每人一条干净音轨后期再不用对着原混音抠。调参要点三个参数管住八成像参数作用threshold语音活性阈值低于它的片段按静音丢弃主要滤掉空轨和杂音尾巴num_workers并行工作进程数长音频上直接省时间beam_size解码束宽调大结果更稳推理也跟着变慢默认值多数场景够用。要动的话优先级建议 threshold 在前beam_size 留到最后。实测数据分离值不值得接在转写前效果侧转写准确率的变化最能说明问题——说话人越多、抢话越狠提升越明显场景直接转写分离后转写提升双人对话78.5%92.3%13.8 个百分点三人交叉对话62.1%89.7%27.6 个百分点速度侧NVIDIA V100 口径音频时长模型处理耗时实时率10 秒sepformer-whamr2.3 秒约 4.3 倍60 秒conv-tasnet8.7 秒约 6.9 倍离线批处理这个速度绰绰有余不必为它单独扩 GPU。进阶串联分离后怎么接逐人转写只拆音轨只完成一半。真正省事的是每路各接一次 Whisper出来的不再是整场录音一大坨而是每个人一段话。from transformers import pipeline import soundfile as sf separator pipeline(audio-source-separation, modelfacebook/sepformer-whamr) asr pipeline(automatic-speech-recognition, modelopenai/whisper-base) mixed, _ sf.read(team_meeting.wav) tracks separator(mixed)[separated_audio] # 逐轨转写{ speaker_1: ..., speaker_2: ... } print({fspeaker_{i 1}: asr(t)[text] for i, t in enumerate(tracks)})要批量处理、导出结构化结果的话examples/pytorch/speech-recognition/ 下的 run_speech_recognition_seq2seq.py 已经把推理链路接好直接在其上扩展即可。避坑清单四个高频翻车点首次运行卡在模型下载网络不稳就把 facebook/sepformer-whamr 的权重用 huggingface-cli 带断点续传提前缓存好或者配镜像源、切离线模式别让第一次跑批白等。转写发闷、识别率忽高忽低多半是采样率没对齐输入统一重采样到 16kHz 再进 pipeline稳定性明显回升。某条轨分出来全是底噪静音段没过滤threshold 往高调低能量片段直接丢。质量还是不满意换大一号的权重sepformer-whamr-large 这类再试不过重叠超过半句的混音分离模型也救不回来得从录制端解决。方向上多语言混合分离、移动端轻量部署、实时会议链路是接下来几条明确的主线。想深入就看 docs 目录里的英文文档要提代码先过一遍 CONTRIBUTING.md按模板发 PR 即可。【免费下载链接】transformers Transformers: the model-definition framework for state-of-the-art machine learning models in text, vision, audio, and multimodal models, for both inference and training.项目地址: https://gitcode.com/GitHub_Trending/tra/transformers创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表