language:
- ja
library_name: transformers
tags:
- jvs
- pyopenjtalk
- speech-to-text
pipeline_tag: text-to-speech
inference: false
日语语音合成专用SpeechT5模型
本SpeechT5模型基于JVS日语语音语料库进行微调,专攻日语文本转语音(TTS)任务。该模型使用的JVS数据集包含100名说话人,我们从中提取说话人嵌入特征,按男女声线分类后生成了独特的16维说话人嵌入向量。这种设计旨在实现与特定说话人无关的通用音质表现。
模型基础架构继承自microsoft/speecht5_tts,分词器采用Open Jtalk技术进行改良。
模型说明
详见原始模型卡片
修改代码采用MIT许可证授权。
使用方式
安装依赖项
pip install transformers sentencepiece pyopnjtalk
下载改良版代码
curl -O https://huggingface.co/esnya/japanese_speecht5_tts/resolve/main/speecht5_openjtalk_tokenizer.py
(语音转文本管道暂未发布
)
import numpy as np
from transformers import (
SpeechT5ForTextToSpeech,
SpeechT5HifiGan,
SpeechT5FeatureExtractor,
SpeechT5Processor,
)
from speecht5_openjtalk_tokenizer import SpeechT5OpenjtalkTokenizer
import soundfile
import torch
model_name = "esnya/japanese_speecht5_tts"
with torch.no_grad():
model = SpeechT5ForTextToSpeech.from_pretrained(
model_name, device_map="cuda", torch_dtype=torch.bfloat16
)
tokenizer = SpeechT5OpenjtalkTokenizer.from_pretrained(model_name)
feature_extractor = SpeechT5FeatureExtractor.from_pretrained(model_name)
processor = SpeechT5Processor(feature_extractor, tokenizer)
vocoder = SpeechT5HifiGan.from_pretrained(
"microsoft/speecht5_hifigan", device_map="cuda", torch_dtype=torch.bfloat16
)
input_text = "吾輩は猫である。名前はまだ無い。どこで生れたかとんと見当がつかぬ。"
input_ids = processor(text=input_text, return_tensors="pt").input_ids.to(model.device)
speaker_embeddings = np.random.uniform(-1, 1, (1, 16))
speaker_embeddings = torch.FloatTensor(speaker_embeddings).to(
device=model.device, dtype=model.dtype
)
waveform = model.generate_speech(input_ids, speaker_embeddings, vocoder=vocoder)
waveform = waveform / waveform.abs().max()
waveform = waveform.reshape(-1).cpu().float().numpy()
soundfile.write("output.wav", waveform, vocoder.config.sampling_rate)
开发背景
开发本模型的动机源于当前SpeechT5 TTS领域明显缺乏优质的日语生成模型。借助Open Jtalk(pyopenjtalk)的g2p功能,我们实现了接近英语模型的词汇处理能力。需要特别说明的是,主要改进集中在分词器部分——与标准配置不同,改良版分词器会单独提取并保留非发声字符,从而确保更精确的文本转语音转换。
已知限制
当前模型存在一个已知问题:当输入包含多个句子时,后续部分可能出现异常静音段。在彻底修复前,建议将长文本拆分为单句分别生成。
授权许可
模型继承JVS语料库使用条款。
延伸阅读
- 高道慎之介, 三井健太郎, 齐藤佑树等, "JVS语料库:免费日语多说话人语音数据集", arXiv预印本, 1908.06248, 2019年8月.