语言:
- 日语
基础模型:
- llm-jp/llm-jp-3-150m-instruct3
任务标签:
- 文本转语音
标签:
- 语音合成
许可证:
- mit
Canary-TTS-0.5B
基于llm-jp/llm-jp-3-150m-instruct3训练的TTS基础模型。
通过移除控制提示以适配后续微调,实现了参数量精简。
Canary-TTS系列索引
快速导航
模型
- 模型名称: 2121‑8/canary‑tts‑0.5b
- 基础架构: llm-jp/llm-jp-3-150m-instruct3
- 音频解码器: OuteAI/wavtokenizer-large-75token-interface
特点
- 精简控制提示层实现高效参数配置
- 支持文本朗读提示功能
- 核心代码整合Parler-TTS与WavTokenizer方案
- 基于llama架构便于LLM技术迁移
安装指南
pip install torch torchvision torchaudio
pip install git+https://github.com/getuka/canary-tts.git
使用方法
随机语音生成
import torch, torchaudio
from transformers import AutoModelForCausalLM, AutoTokenizer
from canary_tts.wavtokenizer import WavDecoder
from rubyinserter import add_ruby
tokenizer = AutoTokenizer.from_pretrained("2121-8/canary-tts-0.5b")
model = AutoModelForCausalLM.from_pretrained("2121-8/canary-tts-0.5b", device_map="auto", torch_dtype=torch.bfloat16)
cache_dir = os.path.join(os.path.join(os.path.expanduser("~"), ".cache"),"outeai", "tts", "wavtokenizer_75_token_interface")
decoder = WavDecoder.from_pretrained(os.path.join(cache_dir, 'decoder')).to(model.device)
prompt = '你好。最近过得怎么样?'
prompt = add_ruby(prompt)
chat = [
{"role": "user", "content": prompt}
]
tokenized_input = tokenizer.apply_chat_template(chat, add_generation_prompt=True, tokenize=True, return_tensors="pt").to(model.device)
with torch.no_grad():
output = model.generate(
tokenized_input,
max_new_tokens=512,
do_sample=True,
temperature=0.9,
)[0]
audio_tokens = output[len(tokenized_input[0]):]
features = decoder.codes_to_features(audio_tokens.unsqueeze(0).unsqueeze(0))
output_audios = decoder(features, bandwidth_id=torch.tensor([0], device=features.device))
torchaudio.save("sample.wav", src=output_audios.cpu(), sample_rate=24000)
语音样本
※基础模型音质较粗糙,但通过单说话人微调可显著改善
特定音色生成
鸣谢
- Parler-TTS社区
- OuteAI开发团队
- wavtokenizer项目组
许可证
MIT授权
版权声明
音频解码器
核心模型
版权及使用须知
请严格遵守以下条款:
-
效果免责
模型输出结果的准确性、合法性和适用性不作任何担保。
-
用户责任
使用本模型须遵守所有适用法律法规,用户需对生成内容承担全部责任。
-
开发者免责
项目维护者不承担任何因版权争议或法律纠纷引发的责任。
-
侵权处理
如遇版权问题,我们将立即移除相关资源。