Open-Lyrics
Open-Lyrics是一个Python库,使用faster-whisper转录语音文件,并使用LLM(如OpenAI-GPT、Anthropic-Claude)将生成的文本翻译/润色成目标语言的.lrc
文件。
主要特性:
新功能 🚨
- 2024.5.7:
- 为OpenAI和Anthropic添加自定义端点(base_url)支持:
lrcer = LRCer(base_url_config={'openai': 'https://api.chatanywhere.tech', 'anthropic': 'https://example/api'})
- 生成双语字幕
lrcer.run('./data/test.mp3', target_lang='zh-cn', bilingual_sub=True)
- 为OpenAI和Anthropic添加自定义端点(base_url)支持:
- 2024.5.11: 在提示词中添加词汇表,已确认可以改善特定领域的翻译。 详情请查看此处。
- 2024.5.17: 您可以通过将
chatbot_model
设置为provider: model_name
并结合base_url_config,将模型路由到任意Chatbot SDK(OpenAI或Anthropic):lrcer = LRCer(chatbot_model='openai: claude-3-haiku-20240307', base_url_config={'openai': 'https://api.g4f.icu/v1/'})
- 2024.6.25: 支持使用Gemini作为翻译引擎LLM,尝试使用
gemini-1.5-flash
:lrcer = LRCer(chatbot_model='gemini-1.5-flash')
安装 ⚙️
-
请先根据https://opennmt.net/CTranslate2/installation.html安装CUDA 11.x和cuDNN 8 for CUDA 11以启用
faster-whisper
。faster-whisper
还需要安装cuBLAS for CUDA 11。Windows用户(点击展开)
(仅适用于Windows用户)Windows用户可以从Purfview的仓库下载库文件:
Purfview的whisper-standalone-win在单个压缩包中提供了Windows所需的NVIDIA库。 解压缩文件并将库文件放置在包含在
PATH
中的目录中。 -
添加LLM API密钥,您可以:
- 将您的OpenAI API密钥添加到环境变量
OPENAI_API_KEY
中。 - 将您的Anthropic API密钥添加到环境变量
ANTHROPIC_API_KEY
中。 - 将您的Google API密钥添加到环境变量
GOOGLE_API_KEY
中。
- 将您的OpenAI API密钥添加到环境变量
-
安装PyTorch:
pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu118
-
安装最新版fast-whisper
pip install git+https://github.com/guillaumekln/faster-whisper
-
安装ffmpeg并将
bin
目录 添加到您的PATH
中。 -
可以通过PyPI安装本项目:
pip install openlrc
或直接从GitHub安装:
pip install git+https://github.com/zh-plus/openlrc
使用方法 🐍
图形界面
[!注意] 我们正在将图形界面从streamlit迁移到Gradio。图形界面仍在开发中。
openlrc gui
Python代码
from openlrc import LRCer
if __name__ == '__main__':
lrcer = LRCer()
# 单个文件
lrcer.run('./data/test.mp3',
target_lang='zh-cn') # 使用默认翻译提示词生成翻译后的./data/test.lrc。
# 多个文件
lrcer.run(['./data/test1.mp3', './data/test2.mp3'], target_lang='zh-cn')
# 注意我们按顺序运行转录,但对每个文件并发运行翻译。
# 路径可以包含视频
lrcer.run(['./data/test_audio.mp3', './data/test_video.mp4'], target_lang='zh-cn')
# 生成翻译后的./data/test_audio.lrc和./data/test_video.srt
# 使用词汇表改善翻译
lrcer = LRCer(glossary='./data/aoe4-glossary.yaml')
# 跳过翻译过程
lrcer.run('./data/test.mp3', target_lang='en', skip_trans=True)
# 更改asr_options或vad_options,详情请查看openlrc.defaults
vad_options = {"threshold": 0.1}
lrcer = LRCer(vad_options=vad_options)
lrcer.run('./data/test.mp3', target_lang='zh-cn')
# 使用噪声抑制增强音频(消耗更多时间)。
lrcer.run('./data/test.mp3', target_lang='zh-cn', noise_suppress=True)
# 更改用于翻译的LLM模型
lrcer = LRCer(chatbot_model='claude-3-sonnet-20240229')
lrcer.run('./data/test.mp3', target_lang='zh-cn')
# 处理完成后清理临时文件夹
lrcer.run('./data/test.mp3', target_lang='zh-cn', clear_temp=True)
# 更改base_url
lrcer = LRCer(base_url_config={'openai': 'https://api.g4f.icu/v1',
'anthropic': 'https://example/api'})
```python
# 将模型路由到任意聊天机器人SDK
lrcer = LRCer(chatbot_model='openai: claude-3-sonnet-20240229',
base_url_config={'openai': 'https://api.g4f.icu/v1/'})
# 双语字幕
lrcer.run('./data/test.mp3', target_lang='zh-cn', bilingual_sub=True)
在文档中查看更多详情。
词汇表
添加词汇表以改善特定领域的翻译。例如aoe4-glossary.yaml
:
{
"aoe4": "帝国时代4",
"feudal": "封建时代",
"2TC": "双TC",
"English": "英格兰文明",
"scout": "侦察兵"
}
lrcer = LRCer(glossary='./data/aoe4-glossary.yaml')
lrcer.run('./data/test.mp3', target_lang='zh-cn')
或直接使用字典添加词汇表:
lrcer = LRCer(glossary={"aoe4": "帝国时代4", "feudal": "封建时代"})
lrcer.run('./data/test.mp3', target_lang='zh-cn')
定价 💰
模型名称 | 每百万Token定价 (输入/输出) (美元) | 1小时音频成本 (美元) |
---|---|---|
gpt-3.5-turbo-0125 | 0.5, 1.5 | 0.01 |
gpt-3.5-turbo | 0.5, 1.5 | 0.01 |
gpt-4-0125-preview | 10, 30 | 0.5 |
gpt-4-turbo-preview | 10, 30 | 0.5 |
gpt-4o | 5, 15 | 0.25 |
claude-3-haiku-20240307 | 0.25, 1.25 | 0.015 |
claude-3-sonnet-20240229 | 3, 15 | 0.2 |
claude-3-opus-20240229 | 15, 75 | 1 |
claude-3-5-sonnet-20240620 | 3, 15 | 0.2 |
gemini-1.5-flash | 0.175, 2.1 | 0.01 |
gemini-1.0-pro | 0.5, 1.5 | 0.01 |
gemini-1.5-pro | 1.75, 21 | 0.1 |
注意成本是基于输入和输出文本的token数量估算的。 实际成本可能因语言和音频速度而有所不同。
推荐的翻译模型
对于英语音频,我们推荐使用gpt-3.5-turbo
或gemini-1.5-flash
。
对于非英语音频,我们推荐使用claude-3-5-sonnet-20240620
。
工作原理
为了在翻译段落之间保持上下文,每个音频文件的处理过程是顺序进行的。
待办事项
- [效率] GPT请求的批量翻译/润色(启用上下文能力)。
- [效率] GPT请求的并发支持。
- [翻译质量] 根据https://github.com/openai/openai-cookbook 使翻译提示更加稳健。
- [功能] 使用GPT自动修复json编码错误。
- [效率] 异步执行多个音频输入的转录和翻译。
- [质量] 根据gpt-subtrans改进批量翻译/润色提示。
- [功能] 支持视频输入。
- [功能] 支持多种输出格式。
- [质量] 输入音频的语音增强。
- [功能] 预处理器:语音-音乐分离。
- [功能] 将ground-truth转录与音频对齐。
- [质量] 使用多语言语言模型评估翻译质量。
- [效率] 添加Azure OpenAI服务支持。
- [质量] 使用claude进行翻译。
- [功能] 添加本地LLM支持。
- [功能] 支持多种翻译引擎(Anthropic、Microsoft、DeepL、Google等)。
- [功能] 构建electron + fastapiGUI作为跨平台应用。
- [功能] 基于Web的streamlit GUI。
- 为常见语言添加微调的whisper-large-v2模型。
- [功能] 添加自定义OpenAI和Anthropic端点支持。
- [功能] 添加本地翻译模型支持(如SakuraLLM)。
- [质量] 为每个补丁构建翻译质量基准测试。
- [其他] 添加转录示例。
- 歌曲
- 播客
- 有声读物
致谢
- https://github.com/guillaumekln/faster-whisper
- https://github.com/m-bain/whisperX
- https://github.com/openai/openai-python
- https://github.com/openai/whisper
- https://github.com/machinewrapped/gpt-subtrans
- https://github.com/MicrosoftTranslator/Text-Translation-API-V3-Python
- https://github.com/streamlit/streamlit