惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

F
Fortinet All Blogs
Microsoft Security Blog
Microsoft Security Blog
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
Vercel News
Vercel News
Application and Cybersecurity Blog
Application and Cybersecurity Blog
C
Check Point Blog
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
W
WeLiveSecurity
The Hacker News
The Hacker News
L
LINUX DO - 热门话题
T
Tenable Blog
Hugging Face - Blog
Hugging Face - Blog
Google Online Security Blog
Google Online Security Blog
博客园 - Franky
P
Proofpoint News Feed
H
Hacker News: Front Page
P
Privacy & Cybersecurity Law Blog
月光博客
月光博客
P
Proofpoint News Feed
Exploit-DB.com RSS Feed
Exploit-DB.com RSS Feed
The GitHub Blog
The GitHub Blog
云风的 BLOG
云风的 BLOG
博客园_首页
www.infosecurity-magazine.com
www.infosecurity-magazine.com
C
CERT Recently Published Vulnerability Notes
Forbes - Security
Forbes - Security
I
InfoQ
Stack Overflow Blog
Stack Overflow Blog
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
Attack and Defense Labs
Attack and Defense Labs
N
News and Events Feed by Topic
博客园 - 叶小钗
T
Threat Research - Cisco Blogs
aimingoo的专栏
aimingoo的专栏
D
Darknet – Hacking Tools, Hacker News & Cyber Security
小众软件
小众软件
大猫的无限游戏
大猫的无限游戏
MongoDB | Blog
MongoDB | Blog
CTFtime.org: upcoming CTF events
CTFtime.org: upcoming CTF events
Hacker News - Newest:
Hacker News - Newest: "LLM"
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
博客园 - 司徒正美
O
OpenAI News
G
Google Developers Blog
Martin Fowler
Martin Fowler
罗磊的独立博客
S
SegmentFault 最新的问题
T
Tor Project blog
量子位

Yunfeng's Simple Blog

2025年终总结 JiT论文阅读Back to Basics-Let Denoising Generative Models Denoise Lepton AI后续 llm-code-scorer wavlm-large模型onnx和mnn版本的导出与使用 解决Manus Blog自动跳转无法访问的问题 Pytorch转ONNX报错-Cannot insert a Tensor that requires grad as a constant 用MOSS-TTSD生成相声 张小珺明超平访谈观点总结 Qwen VLo 效果实测 美团 NoCode 简单使用体验 AI时代的产品文本化 Comma v0.1 -全开源数据训练的可复现大模型 用gradio部署mcp server repetition_penality的作用与实现 git lfs pointer 报错解决 bitnet-b1.58-2b-4t Neovim conceal机制导致markdown语法隐藏的问题 Quotation Armin Ronacher's Reflecting on Life
lyrichroma-一键将语音转换为视频的Python命令行工具
Yunfeng Wang · 2025-12-20 · via Yunfeng's Simple Blog

说明

最近有个工作需要一个宣传视频,我希望将声音转换为黑白背景的视频,并且将声音对应的文字通过字幕形式显示出来,但没找到合适的工具。剪映语音识别字幕当然做的很好,但是要开VIP;必剪语音识别时候卡死……而刚好最近AI Coding工具越来越强,我在想,何不自己做一个顺手的工具呢,于是就有了这个极简的Python 命令行工具lyrichroma,一键音频转视频,可以设置背景,可以调整字幕位置,可以手动修改ASR识别的字幕错误,等等功能。

代码仓库: https://github.com/vra/lyrichroma

主要功能一览

在详细介绍如何使用之前,让我们先来看看 lyrichroma 的主要特性:

自动语音识别(ASR):基于 faster-whisper 引擎,支持多种语言(包括中文),并提供词级别的时间戳,支持切换ASR模型
动态背景效果:内置多种炫酷的动态背景,比如极光、日落、海洋、赛博朋克和森林主题
卡拉OK样式字幕:实时高亮当前朗读的单词,营造卡拉OK效果
高度可定制化:支持调整字体大小、颜色、高亮颜色和字幕位置
字幕编辑功能:可导出字幕为 JSON 文件进行人工校对,再重新导入生成视频

安装步骤

最简单的安装方式是使用pip:

1
pip install lyrichroma

另外,如果想想源码使用也是可以的,lyrichroma 使用 uv 进行管理,因此使用非常方便

1
2
3
4
5
6
7
8
9

pip install uv


git clone https://github.com/vra/lyrichroma
cd lyrichroma


uv sync

就是这么简单!接下来我们就可以开始使用了。

基础使用方法

最基本的用法只需要一行命令:

1
lyrichroma --input audio.mp3 --output video.mp4

这条命令会将 audio.mp3 转换为 video.mp4,并配有黑色背景和白色字幕。

进阶使用技巧

  1. 动态背景效果
    如果你觉得纯色背景太单调,lyrichroma 内置了几种炫酷的动态背景:
    1
    lyrichroma --input audio.mp3 --output video.mp4 --bg-type dynamic --bg-value aurora
    目前支持的调色板包括:
    1
    2
    3
    4
    5
    aurora(极光效果,默认)
    sunset(日落效果)
    ocean(海洋效果)
    cyberpunk(赛博朋克效果)
    forest(森林效果)

    2. 自定义静态背景

    除了动态背景,你还可以使用纯色或图片作为背景:
1
2
3
4
5

lyrichroma --input audio.mp3 --output video.mp4 --bg-type color --bg-value "#FF5733"


lyrichroma --input audio.mp3 --output video.mp4 --bg-type image --bg-value background.jpg

3. 字幕样式定制

lyrichroma 提供了样式定制选项:

1
2
3
4
5
6
7
lyrichroma \
--input audio.mp3 \
--output video.mp4 \
--font-size 60 \
--font-color "#FFFFFF" \
--highlight-color "#FF0000" \
--text-y 0.8

各参数含义:
–font-size:设置字幕字体大小(默认40)
–font-color:设置字幕颜色(默认白色)
–highlight-color:设置当前朗读词的高亮颜色(默认黄色)
–text-y:设置字幕垂直位置,范围0.0(顶部)到1.0(底部)(默认0.8)

4. 字幕编辑工作流

对于需要精确控制字幕内容的场景,lyrichroma 提供了字幕编辑工作流,这是该工具的一大亮点。由于自动语音识别技术并非完美,有时会出现识别错误,这时就需要人工干预。

LyriChroma 的字幕编辑工作流分为三步:

第一步:只生成字幕文件(不生成视频):

lyrichroma –input audio.mp3 –save-transcript transcript.json
执行这个命令后,你会得到一个名为 transcript.json 的文件,它包含了所有的识别结果和时间戳信息。

第二步:手动编辑生成的 transcript.json 文件

打开这个 JSON 文件,你会发现它的结构类似于:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
[
{
"start": 0.0,
"end": 3.0,
"text": "你好世界",
"words": [
{
"start": 0.0,
"end": 1.5,
"word": "你好",
"probability": 0.9
},
{
"start": 1.5,
"end": 3.0,
"word": "世界",
"probability": 0.85
}
]
}
]

在这个文件中,你可以:

更正识别错误的文字内容
调整时间戳以改善同步效果
删除不必要的段落
添加遗漏的内容
例如,如果某个词被错误识别,你可以直接修改对应的 word 或 text 字段。如果你发现某个时间段的字幕时间不对,可以调整 start 和 end 时间戳。

第三步:使用编辑后的字幕生成视频:

1
lyrichroma --input audio.mp3 --output video.mp4 --load-transcript transcript.json

这样就能生成带有经过人工修正的高质量字幕的视频了。

这种方式特别适合需要对自动识别结果进行校正的场景,比如:

专业术语识别不准确
人名、地名识别错误
方言口音导致的识别偏差
背景噪音影响识别准确性