Extensions/ComfyUI_ASR
ComfyUI Extension

ComfyUI_ASR

带时间戳、标点符号,自动语音识别。给视频自动添加字幕。

By billwuhao·Created about a year ago·Updated 7 months ago· 35
billwuhao/ComfyUI_ASR
Nodes
On cloudLocal install
Stars35
Updated7 months ago
Readme

ComfyUI_ASR 是一套用于语音识别和字幕处理的ComfyUI自定义节点集合,包含语音识别、字幕生成和颜色选择等功能。

很早之前我写过一个类似添加字幕节点,但问题很多。这个节点进行了重要优化和更新,并将语音自动识别节点也放到一起,方便一键添加字幕:

  • 中英文语音识别基本无误,支持更多语言,但我没一一测试(需要更多语言支持请联系我添加模型);
  • 支持静态和动态字幕,静态字幕每句话完整显示,动态字幕按字词依次显示;
  • 字幕块始终水平居中,块内可选(左中右)对齐;
  • 字体大小字幕块宽度自适应视频分辨率,无论512x512还是2048x2048,都完美显示,并且可调节大小和宽度;
  • 字幕默认最底部,可向上调节;
  • 可添加字体背景及背景色,可调节透明度;
  • 可添加字体描边及描边颜色,可调节宽度(描边拉到11左右会有棉花糖效果);
  • 可选是否去除标点符号,去掉标点符号后会更美观;
  • 全中文参数,无需汉化。

https://github.com/user-attachments/assets/3d445437-4be7-46c9-86a4-af6720ad6969

https://github.com/user-attachments/assets/b7f7489c-a508-49b9-924a-62ed3e104885

https://github.com/user-attachments/assets/0831e13f-27ae-493c-a3bf-9dfd23f57838

https://github.com/user-attachments/assets/045971df-2668-4044-96ad-30a2d9d03171

📣 更新

[2026-02-09]⚒️: ComfyUI 长视频添加字幕太慢。增加 SRT 字幕输出,可保存为纯文本 SRT 文件,用播放器打开自动加载超快。

[2025-11-02]⚒️: v1.0.2。修复描边宽度参数非整数问题。增加模型自动下载功能,第一次运行,如果模型未下载,会自动下载。

[2025-11-01]⚒️: 发布 v1.0.0。

语音识别节点

ASRMW 节点

该节点提供语音识别功能,可将音频转换为文本和时间戳信息。

参数说明:

  • 模型: 选择ASR模型,中文推荐使用带zh标记的模型。可选值:
    • Belle-whisper-large-v3-zh-punct-ct2,
    • Belle-whisper-large-v3-zh-punct-ct2-float32,
    • faster-whisper-large-v3-turbo-ct2
  • 音频: 输入音频文件
  • 每句最大长度: 每句话的最大长度,中文按字数计算,英文按字母数计算
  • 卸载模型: 运行后是否卸载模型以释放显存
  • seed: 随机种子

输出:

  • 纯文本: 识别出的纯文本内容
  • 时间戳单词: 带时间戳的单词表
  • 时间戳句子: 带时间戳的句子表

字幕添加节点

StaticSubtitlesToVideoMW 节点

该节点用于为视频添加静态字幕,每句话完整显示。

参数说明:

  • 视频: 输入视频
  • 帧率: 视频帧率
  • 字幕文本: 逐句时间戳文本
  • 字体: 字幕字体,需放在节点目录fonts下
  • 字体大小比例: 字幕字体大小与视频宽度的比例
  • 字体颜色: 字体颜色,格式为#RRGGBB
  • 字体背景色: 字体背景颜色,格式为#RRGGBB
  • 背景透明度: 字幕背景透明度,0为完全透明,1为完全不透明

可选参数:

  • 字幕宽度比例: 字幕宽度与视频宽度的比例
  • 垂直向上偏移: 字幕块垂直向上偏移量
  • 文本行对齐方式: 文本行对齐方式 (left, center, right)
  • 行间距: 字幕行间距
  • 描边宽度: 字幕字体描边宽度
  • 描边颜色: 描边颜色,留空则使用与字体相同的颜色
  • 行内字体上边距: 字幕字体与背景框顶部的间距
  • 行内字体下边距: 字幕字体与背景框底部的间距
  • 去除标点符号: 是否去除所有标点符号并替换为空格

输出:

  • 静态字幕视频: 添加了静态字幕的视频

DynamicSubtitlesToVideoMW 节点

该节点用于为视频添加动态字幕,逐词显示,实现打字机效果。

参数说明:

  • 视频: 输入视频
  • 帧率: 视频帧率
  • 字幕文本: 逐词时间戳文本
  • 字体: 字幕字体,需放在节点目录fonts下
  • 字体大小比例: 字幕字体大小与视频宽度的比例
  • 字体颜色: 字体颜色,格式为#RRGGBB
  • 字体背景色: 字体背景颜色,格式为#RRGGBB
  • 背景透明度: 字幕背景透明度,0为完全透明,1为完全不透明

可选参数:

  • 最大行数: 屏幕上同时显示的最大字幕行数
  • 字幕宽度比例: 字幕宽度与视频宽度的比例
  • 垂直向上偏移: 字幕垂直向上偏移的像素数
  • 行间距: 字幕行间距的像素数
  • 描边宽度: 字幕字体描边宽度,0为不描边
  • 描边颜色: 描边颜色,留空则使用与字体相同的颜色
  • 行内字体上边距: 字幕字体与背景框顶部的间距
  • 行内字体下边距: 字幕字体与背景框底部的间距
  • 清空阈值: 前后两句话之间静音超过该秒数,则清空字幕重新开始
  • 去除标点符号: 是否去除所有标点符号

输出:

  • 动态字幕视频: 添加了动态字幕的视频

颜色选择器节点

ColorPickerMW 节点

该节点提供颜色选择功能,可用于设置字幕颜色。

参数说明:

  • color: 颜色选择器,默认为红色 (#f30e0eff)

输出:

  • #RRGGBB: 选择的颜色值,格式为十六进制颜色代码

使用流程示例

  1. 使用ASRMW节点将音频转换为文本和时间戳
  2. 使用ColorPickerMW节点选择字幕颜色
  3. 根据需要选择StaticSubtitlesToVideoMW或DynamicSubtitlesToVideoMW节点为视频添加字幕
  4. 调整字幕参数以获得最佳显示效果

注意事项

  • 字体文件需放置在节点目录下的fonts文件夹中
  • 动态字幕需要使用逐词时间戳,静态字幕需要使用逐句时间戳
  • 中文字幕会自动使用jieba分词进行处理,以获得更好的显示效果

安装

cd ComfyUI/custom_nodes
git clone https://github.com/billwuhao/ComfyUI_ASR.git
cd ComfyUI_ASR
pip install -r requirements.txt

# python_embeded
./python_embeded/python.exe -m pip install -r requirements.txt

模型下载

如果不能自动下载,请手动下载。

选择需要的模型(可任选其一,中文请选 “zh” 版本),下载放到 ComfyUI/models/TTS 目录下,例如:

.../TTS/Belle-whisper-large-v3-zh-punct-ct2
    config.json
    model.bin
    preprocessor_config.json
    tokenizer.json
    vocabulary.json

鸣谢

faster-whisper