lyrichroma-一键将语音转换为视频的Python命令行工具

说明

最近有个工作需要一个宣传视频,我希望将声音转换为黑白背景的视频,并且将声音对应的文字通过字幕形式显示出来,但没找到合适的工具。剪映语音识别字幕当然做的很好,但是要开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
# 首先安装 uv(如果尚未安装)
pip install uv

# clone 代码
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

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

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

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