关键词:藏语、TTS、本地运行、MMS、VITS、Python
0. 这篇文章要解决什么问题?
这篇文章的目标是:
在本地,用 Python + 开源模型,把藏文文本文件合成一段藏语语音(wav 文件)。
读完后,你能做到这件事:
- 有一个
tibetan_text.txt,里面写着几行藏文; - 运行一个 Python 脚本;
- 得到一个
tibetan_from_file.wav,可以直接播放,听到藏语朗读。
1. 方案概览:用什么?
我们选用的是 Meta 开源的 MMS-TTS 模型中的一个子模型:
- 模型名:
facebook/mms-tts-khg - 作用:针对 藏语康方言(Khams) 的文本转语音(TTS)模型
- 接口:已经集成进 Hugging Face 的 Transformers 库
你可以简单把它理解为一个'会说藏语康方言的 TTS 小盒子':
- 输入:藏文文本(Unicode 藏文字)
- 输出:语音波形(可以保存为 wav 文件)
我们要做的事情就是:
- 把文本从文件中读出来;
- 交给这个模型;
- 把模型输出的语音保存为一个
.wav文件。
2. 环境准备
2.1 创建虚拟环境(可选但推荐)
python -m venv venv
source venv/bin/activate # macOS / Linux
# venv\Scripts\activate # Windows
2.2 安装依赖
pip install --upgrade transformers accelerate
pip install torch scipy numpy
说明:
transformers:加载 MMS-TTS 模型;torch:模型推理;scipy、numpy:处理音频、写 wav 文件。
第一次运行时,会自动从 Hugging Face 下载模型文件,可能几百 MB。
3. 准备藏文文本文件
在你准备放脚本的目录下,新建一个文本文件:
文件名:tibetan_text.txt
编码:UTF-8
示例内容(你可以换成自己的):
ངའི་མིང་ལ་བཀྲ་ཤིས་ཟེར། ང་སློབ་མ་ཡིན།
脚本会把整个文件内容合成成一段连续语音。
4. 完整代码:从文件读入 → 合成 → 输出 wav
在和 tibetan_text.txt 同一个目录下,新建 Python 文件,比如 mms_tts_from_file.py,内容如下:
transformers VitsModel, AutoTokenizer
torch
scipy.io.wavfile wavfile
pathlib Path
os
numpy np
():
(, os.getcwd())
script_dir = Path(__file__).resolve().parent
input_path = script_dir /
input_path.exists():
()
()
(input_path, , encoding=) f:
text = f.read().strip()
text:
()
()
(text)
( * )
model_name =
()
model = VitsModel.from_pretrained(model_name)
tokenizer = AutoTokenizer.from_pretrained(model_name)
model.()
inputs = tokenizer(text, return_tensors=)
()
torch.no_grad():
output = model(**inputs).waveform
audio = output.squeeze().cpu().numpy()
max_val = np.(np.(audio))
max_val > :
audio = audio / max_val
audio = (audio * ).astype()
sr = model.config.sampling_rate
out_path = script_dir /
wavfile.write((out_path), rate=sr, data=audio)
()
(out_path)
(, out_path.exists())
__name__ == :
main()

