# bankyou **Repository Path**: feifei14119/bankyou ## Basic Information - **Project Name**: bankyou - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-03-07 - **Last Updated**: 2026-03-09 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Bankyou 本地日语 TTS 与字幕工具:基于 Qwen3-TTS 将多句日语合成为音频,并生成日语(可选带中文翻译)的 SRT 字幕。 ## 功能 - **多句日语 TTS**:从文件或标准输入读取多行句子,逐句合成并拼接为一段音频 - **双语字幕**:支持每行「日文`\t`中文」格式,输出 SRT 含日语或日语+中文 - **可选 CPU 模式**:支持 `--cpu`,在 AMD/ROCm 等多句连续推理易卡住时可改用 CPU ## 使用的模型 | 模型 | 用途 | 说明 | |------|------|------| | **Qwen3-TTS-0.6B** | 日语语音合成 | 默认路径:`/feifei/repo/Qwen3-TTS-0.6B`,可通过 `-m` / `--model` 指定;需从 [Qwen3-TTS](https://github.com/QwenLM/Qwen3-TTS) 仓库安装 `qwen_tts` 并下载对应权重| - 模型仓库:https://www.modelscope.cn/models/Qwen/Qwen3-TTS-12Hz-0.6B-Base - 下载:`modelscope download --model Qwen/Qwen3-TTS-12Hz-0.6B-Base --local_dir /feifei/repo/Qwen3-TTS-0.6B` ## 环境与依赖 - Python 3 - PyTorch - `soundfile`、`numpy` - **qwen_tts**:需在 [Qwen3-TTS](https://github.com/QwenLM/Qwen3-TTS) 仓库中安装(如 `pip install -e .`),并下载 Qwen3-TTS-0.6B 模型到本地 ## 网页端(上传生成 + 下载) 在项目目录下启动: ```bash pip install flask python web_app.py ``` 浏览器打开 http://127.0.0.1:5000 ,上传 `sentences.txt`,点击「生成」,等待完成后点击「保存到本地」即可下载生成的音频。生成文件存放在项目下的 `generated/` 目录。 ### 宿主机跑网页 + 容器内跑 qwen_tts(推荐) 网页在宿主机(bare metal)运行,生成时通过 `docker exec` 在指定容器内执行 `qwen_tts.py`,无需在容器内安装 Flask。 1. **启动容器并挂载项目与模型**(宿主机执行,容器名例如 `ff_rocm7`) 宿主机与容器内**使用同一路径**时配置最简单(下面以 `/feifei/repo/bankyou` 为例): ```bash docker run -d --name ff_rocm7 \ -v /feifei/repo/bankyou:/feifei/repo/bankyou \ -v /feifei/repo/Qwen3-TTS-0.6B:/feifei/repo/Qwen3-TTS-0.6B:ro \ ff_rocm7 \ sleep infinity ``` 若你使用其他挂载方式(例如容器内为 `/workspace/bankyou`),需设置环境变量 `BANKYOU_CONTAINER_REPO_PATH` 见下。 2. **在宿主机安装 Flask 并启动网页** ```bash cd /feifei/repo/bankyou pip install flask export BANKYOU_CONTAINER=ff_rocm7 # 若容器内项目路径与宿主机不同,例如容器内为 /workspace/bankyou: # export BANKYOU_CONTAINER_REPO_PATH=/workspace/bankyou python web_app.py ``` 3. **(可选)容器内使用 CPU 避免 ROCm 多句卡住** ```bash export BANKYOU_USE_CPU=1 python web_app.py ``` 4. **访问** 浏览器打开 http://127.0.0.1:5000(或 http://\<宿主机 IP\>:5000 从局域网访问)。 **环境变量说明**(均在宿主机设置): | 变量 | 说明 | |------|------| | `BANKYOU_CONTAINER` | 运行 qwen_tts.py 的容器名或 ID;**不设置**则在本机直接执行 `qwen_tts.py`(不经过 docker) | | `BANKYOU_CONTAINER_REPO_PATH` | 容器内本项目的路径;默认用宿主机路径,**若容器内挂载点不同(如 `/workspace/bankyou`)必须设为容器内实际路径**,否则会报「容器内找不到 qwen_tts.py」 | | `BANKYOU_USE_CPU` | 设为 `1` 时调用 bankyou 时追加 `--cpu` | ## 使用方法 ### 基本用法 ```bash # 从文件读取句子,输出默认名为 japanese_tts_output.wav / japanese_tts_output.srt python my_tts_japanese.py sentences.txt # 指定输出基础名(不含扩展名) python my_tts_japanese.py sentences.txt -o my_japanese # 从标准输入读入(每行一句,空行结束) python my_tts_japanese.py - ``` ### 输入格式 每行一句,支持两种形式: - **仅日语**:`こんにちは。` - **日语 + 中文**(制表符或连续空格分隔):`今日はいい天気ですね。 今天天气真好啊。` 以 `#` 开头的行和空行会被忽略。 示例 `sentences.txt`: ``` こんにちは。 今日はいい天気ですね。 今天天气真好啊。 ありがとうございます。 谢谢。 ``` ### 常用参数 | 参数 | 说明 | |------|------| | `input` | 输入文件路径;`-` 表示从标准输入读取(默认) | | `-o`, `--output` | 输出基础名(生成 `.wav` 与 `.srt`),默认 `japanese_tts_output` | | `-m`, `--model` | Qwen3-TTS 模型目录,默认 `/feifei/repo/Qwen3-TTS-0.6B` | | `--ja-only-srt` | 额外生成仅日文的字幕文件 `*.ja.srt` | | `--cpu` | 强制仅用 CPU(在 import 前隐藏 GPU),ROCm 下若多句合成卡住可尝试 | ### 输出文件 - **`.wav`**:合成的完整音频(24kHz) - **`.srt`**:SRT 字幕(日语,若输入有中文则每段含日语+中文) - **`.ja.srt`**:仅当使用 `--ja-only-srt` 时生成,仅日文 ## 示例 ```bash # 使用默认模型与输出名 python my_tts_japanese.py sentences.txt # 自定义输出名与模型路径,并生成仅日文字幕 python my_tts_japanese.py sentences.txt -o my_japanese -m /path/to/Qwen3-TTS-0.6B --ja-only-srt # 使用 CPU 避免 ROCm 下多句卡住 python my_tts_japanese.py sentences.txt --cpu ``` ## 参考 - [Qwen3-TTS](https://github.com/QwenLM/Qwen3-TTS) — 模型与 `qwen_tts` 代码来源 在python evn中 pip install flask export BANKYOU_CONTAINER=ff_rocm7 export BANKYOU_CONTAINER_REPO_PATH=/feifei/repo/bankyou python web_tts.py export QWEN_CONTAINER=ff_rocm7 export QWEN_CONTAINER_REPO_PATH=/feifei/repo/bankyou export QWEN_USE_CPU=1 python web_txt.py