Length-Aware Rotary Position Embedding for Text-Speech Alignment
Paper • 2509.11084 • Published
日本語専用TTSモデルです
トークナイザーを大幅に修正している関係で日本語以外はしゃべれません
80Mパラメータでのvoice cloningを目指しています
LARoPEとinterleaved-MPoPEを組み合わせた独自PEを実装しています
pip install torch torchaudio transformers alkana e2k neucodec pyopenjtalk-plus[onnxruntime] miniaudio
import torch
from transformers import AutoModelForCausalLM, AutoTokenizer
tokenizer = AutoTokenizer.from_pretrained("tsukemono/lam-tts-jp-80m", trust_remote_code=True)
model = AutoModelForCausalLM.from_pretrained("tsukemono/lam-tts-jp-80m", trust_remote_code=True).eval()
prompt_ids, position_ids = tokenizer.encode_all(
text="ここに喋らせたいテキスト",
audio_reference="参照音声.mp3",
speaking_time=4, # 何秒喋らすか
# speed=15, # ひらがな換算での一秒間の発話文字数 speaking_timeがあるときはそちらを優先
return_tensors="pt",
)
with torch.inference_mode():
generated = model.generate(
input_ids=prompt_ids.reshape(1, -1),
position_ids=position_ids.reshape(1, 2, -1),
repetition_penalty=1.1,
do_sample=True,
temperature=0.8,
top_k=50,
top_p=0.99,
min_p=0.0
)
tokenizer.decode_audio(generated[0, len(prompt_ids):], "output.wav")
学習元(llm-jp-3−150m)から以下の変更を行いました
Base model
llm-jp/llm-jp-3-150m