8000 GitHub - XnneHangLab/XnneHangLab: 一个基于 Funasr 的离线字幕生成工具~
[go: up one dir, main page]
More Web Proxy on the site http://driver.im/
Skip to content

XnneHangLab/XnneHangLab

Repository files navigation

魔女の实验室

uv ruff Gitmoji PyTorch FunASRStreamlit

English Documentation

魔女の实验室

文档网站(等等噢) · bilibili视频教程(再等等噢)

功能 · 演示 · 本地部署 fastapi&cli ·


它为什么诞生

我对它的期望是一个满足我日常音频所需的完整的工作流,主要有:

做视频: 视频字幕生成 -> 视频字幕速度调节和编辑 -> 字幕内嵌或者导出

啃生肉提高日语水平 b站视频下载 -> 视频字幕生成 -> 视频字幕翻译

tts/sts 数据集制作: 音频字幕生成 -> 自动裁剪音频 -> 响度匹配 -> 降噪 -> 字幕再次生成

tts/sts 微调和语音生成: 可能会把以前玩过的 Bert-ViTS2 集成进来,同样,也是做视频用。

为什么叫魔女の实验室

我在写这个项目的时经常想到伊蕾娜她小时候认真学习魔法的样子。

我大概也是以那种心态在写这个项目吧。不知道后面能不能直接把这个当毕设了。

功能

由于我总是忘记之后要什么,所以做了一个 To-Do-List 来提醒自己。分短期和长期任务,长期任务也可以作为 RoadMap。

最近正在支持 SenseVoice 的时间检测,以及视频输入的 GUI 版本还在赶来的路上。

使用方法类似于 Downkyi, 致力于从视频下载到音频处理以及字幕生成一条龙服务。

fastapi&cli

你也可以把该项目作为后端, 它使用 FastAPI 提供了部分功能, 具体参考 fastapi 文档。

该项目也正在开发 cli 工具, 目前支持音频识别和语音活动检测, 具体参考 cli 文档。

写前端后端混合让我感到稀碎和结构混乱, 反而 cli 有助于理解项目结构? 简单说就是更爽.

演示

从我的网站访问: lab.xnnehang.top

如果你发现网站不在线,那么可能是节假日我在家打游戏把它关了 =-=.

我用 frp 和 一个外国的服务器把该项目部署到了我家的台式机并且可以通过网站访问。你可以在这里轻度体验。

下面是一些截图。

todo

audio-recognize

image-20250509114721029

本地部署

0.前置

如果你是 windows , 可以先安装 scoop , 这样可以更方便的安装依赖。
只需要打开 powershell 然后运行:

Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser
Invoke-RestMethod -Uri https://get.scoop.sh | Invoke-Expression

之后你就可以在任何终端使用 scoop.

ffmpeg, 本项目的依赖项 yutto 用到系统的 ffmpeg, 目前 ffmpeg 需要在全局可以访问, 对于 mac 和 linux 用户可以直接:

sudo apt install ffmpeg # linux
brew install ffmpeg # mac
scoop install ffmpeg # windows

也可以下载 ffmpeg 的可执行文件然后添加到全局设置和 b站视频下载 是 ffmpeg 路径设置项中.

uv 是本项目的包管理工具,它让你免于手动配置和调试环境。你可以从安装指南找到合适的安装方式~

curl -LsSf https://astral.sh/uv/install.sh | sh # linux / mac
scoop install uv # windows
# 完整完均需要新开终端

just 是一款用 rust 编写的简单易用的命令执行工具,它可以让原本复杂的命令运行变得简单。安装方法请参考它的文档。该项非必须, Windows 比较难安装 just (当然如果你有 scoop 和 git bash 可以直接 scoop install just), 可以跳过。后续使用 bat 脚本替代即可。

# windows
scoop install git
scoop install just

# linux / mac
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh # rust-tool-chain, 安装新开终端
cargo install just

ps: windows 用户也可以等待网盘的整合包。整合包双击运行,包含所有环境以及依赖.

1. 克隆仓库

git clone https://github.com/XnneHangLab/XnneHangLab.git
cd XnneHangLab
git submodule update --init --recursive packages

2. 自动安装依赖并下载必要模型权重文件

如果你有 just:

just install-model

过程可能较久,因为需要先安装 python 环境,然后再下载模型, 模型和环境都不小, 建议可以先构建 cpu 版本进行功能预览,等有性能和批处理需求了再构建 gpu 版本的 torch。

更改 pyproject.toml 的这几行即可:

# windows 下安装 pytorch-cuda, linux 和 mac 下安装 pytorch-cpu, 你可以根据你的系统和需求任意修改
[tool.uv.sources]
torch = [
  { index = "pytorch-cu118", marker = "sys_platform == 'win32'" }, # sys_platform : 'win32' , 'linux' , 'Darwin'
  { index = "pytorch-cpu", marker = "sys_platform != 'win32'"}
]
torchaudio = [
  { index = "pytorch-cu118", marker = "sys_platform == 'win32'" },
  { index = "pytorch-cpu", marker = "sys_platform != 'win32'"}
]

# 比如, 安装 `cpu` 版本:
[tool.uv.sources]
torch = { index = "pytorch-cpu"}
torchaudio = { index = "pytorch-cpu"}

# 安装 `cuda` 版本:
[tool.uv.sources]
torch = { index = "pytorch-cu118"}
torchaudio = { index = "pytorch-cu118"}

默认 windows 下是 pytorch-cu118 , linux 和 mac 下是 pytorch-cpu, 你可以直接对调.

你可以通过重复运行来验证模型是否下载完整:

(xnnehanglab) xnne@xnne-PC:~/code/XnneHangLab$ just install-model
uv lock
Resolved 106 packages in 5ms
uv sync
Resolved 106 packages in 6ms
Audited 100 packages in 0.49ms
# ASR with hotwords
uv run modelscope download --model iic/punc_ct-transformer_zh-cn-common-vocab272727-pytorch --local_dir ./models/punc_ct-transformer_zh-cn-common-vocab272727-pytorch
Downloading Model from https://www.modelscope.cn to directory: /home/xnne/code/XnneHangLab/models/punc_ct-transformer_zh-cn-common-vocab272727-pytorch
2025-03-31 20:41:31,448 - modelscope - WARNING - Model revision not specified, use revision: v2.0.4
uv run modelscope download --model iic/speech_fsmn_vad_zh-cn-16k-common-pytorch --local_dir ./models/speech_fsmn_vad_zh-cn-16k-common-pytorch
Downloading Model from https://www.modelscope.cn to directory: /home/xnne/code/XnneHangLab/models/speech_fsmn_vad_zh-cn-16k-common-pytorch
2025-03-31 20:41:34,048 - modelscope - WARNING - Model revision not specified, use revision: v2.0.4
uv run modelscope download --model iic/speech_seaco_paraformer_large_asr_nat-zh-cn-16k-common-vocab8404-pytorch --local_dir ./models/speech_seaco_paraformer_large_asr_nat-zh-cn-16k-common-vocab8404-pytorch
Downloading Model from https://www.modelscope.cn to directory: /home/xnne/code/XnneHangLab/models/speech_seaco_paraformer_large_asr_nat-zh-cn-16k-common-vocab8404-pytorch
2025-03-31 20:41:36,349 - modelscope - WARNING - Model revision not specified, use revision: v2.0.9
# SenseVoiceSmall
uv run modelscope download --model iic/SenseVoiceSmall --local_dir ./models/SenseVoiceSmall
Downloading Model from https://www.modelscope.cn to directory: /home/xnne/code/XnneHangLab/models/SenseVoiceSmall

如果你是 Windows 并且没有 just , 那么也可以通过手动运行下列命令来安装模型:

uv lock
uv sync

# ASR with hotwords
uv run modelscope download --model iic/punc_ct-transformer_zh-cn-common-vocab272727-pytorch --local_dir ./models/punc_ct-transformer_zh-cn-common-vocab272727-pytorch
uv run modelscope download --model iic/speech_fsmn_vad_zh-cn-16k-common-pytorch --local_dir ./models/speech_fsmn_vad_zh-cn-16k-common-pytorch
uv run modelscope download --model iic/speech_seaco_paraformer_large_asr_nat-zh-cn-16k-common-vocab8404-pytorch --local_dir ./models/speech_seaco_paraformer_large_
868F
asr_nat-zh-cn-16k-common-vocab8404-pytorch

# SenseVoiceSmall
uv run modelscope download --model iic/SenseVoiceSmall --local_dir ./models/SenseVoiceSmall

可以通过阅读 justfile 得到。

3.运行程序

just start

之后进入弹出的 URL 即可:

(xnnehanglab) xnne@xnne-PC:~/code/XnneHangLab$ just start
uv lock
Resolved 106 packages in 6ms
uv sync
Resolved 106 packages in 6ms
Audited 100 packages in 0.31ms
uv run get_root
uv run streamlit run src/lab/ui.py

  You can now view your Streamlit app in your browser.

  Local URL: http://localhost:8501
  Network URL: http://192.168.123.109:8501

如何使用

使用手册

RoadMap

  • 音频处理的批处理支持
  • 音频字幕编辑和微调
  • SenseVoice with TimeStamp 模型选项支持
  • 视频识别模块
  • yutto-uiya 的移重构 bilibili 视频下载 new package

引用的仓库

如何参与到开发:

详细参见: CONTRIBUTING.md

非常欢迎各位以任何形式的贡献,包括, bug 反馈,使用体验优化,第三方库和模型更新提醒,合理有益的功能需求等等。

About

一个基于 Funasr 的离线字幕生成工具~

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Contributors 2

  •  
  •  
0