kokoro本地部署使用

6 阅读3分钟
from kokoro import KPipeline, KModel
from IPython.display import display, Audio
import soundfile as sf

# 参数中config与model修改为本地模型路径
model = KModel(config='./config.json', model='./kokoro-v1_0.pth')
pipeline = KPipeline(lang_code='z', model=model)
text = '路上只我一个人,背着手踱着。这一片天地好像是我的;我也像超出了平常旳自己,到了另一世界里。我爱热闹,也爱冷静;爱群居,也爱独处。像今晚上,一个人在这苍茫旳月下,什么都可以想,什么都可以不想,便觉是个自由的人。白天里一定要做的事,一定要说的话,现在都可不理。这是独处的妙处,我且受用这无边的荷香月色好了。曲曲折折的荷塘上面,弥望旳是田田的叶子。叶子出水很高,像亭亭旳舞女旳裙。层层的叶子中间,零星地点缀着些白花,有袅娜(niǎo,nuó)地开着旳,有羞涩地打着朵儿旳;正如一粒粒的明珠,又如碧天里的星星,又如刚出浴的美人。微风过处,送来缕缕清香,仿佛远处高楼上渺茫的歌声似的。这时候叶子与花也有一丝的颤动,像闪电般,霎时传过荷塘的那边去了。叶子本是肩并肩密密地挨着,这便宛然有了一道凝碧的波痕。叶子底下是脉脉(mò)的流水,遮住了,不能见一些颜色;而叶子却更见风致了。月光如流水一般,静静地泻在这一片叶子和花上。薄薄的青雾浮起在荷塘里。叶子和花仿佛在牛乳中洗过一样;又像笼着轻纱的梦。虽然是满月,天上却有一层淡淡的云,所以不能朗照;但我以为这恰是到了好处——酣眠固不可少,小睡也别有风味的。月光是隔了树照过来的,高处丛生的灌木,落下参差的斑驳的黑影,峭楞楞如鬼一般;弯弯的杨柳的稀疏的倩影,却又像是画在荷叶上。塘中的月色并不均匀;但光与影有着和谐的旋律,如梵婀(ē)玲(英语violin小提琴的译音)上奏着的名曲。荷塘的四面,远远近近,高高低低都是树,而杨柳最多。这些树将一片荷塘重重围住;只在小路一旁,漏着几段空隙,像是特为月光留下的。树色一例是阴阴的,乍看像一团烟雾;但杨柳的丰姿,便在烟雾里也辨得出。树梢上隐隐约约的是一带远山,只有些大意罢了。树缝里也漏着一两点路灯光,没精打采的,是渴睡人的眼。这时候最热闹的,要数树上的蝉声与水里的蛙声;但热闹是它们的,我什么也没有。'

# 下方voice修改为本地对应模型路径
generator = pipeline(
    text, 
    voice='./voices/zm_yunxi.pt', # <= change voice here
    speed=0.85, 
    split_pattern=r'[,,.。!!??;;\n]+',
    # noise_scale=0.667,  # 调整噪声比例
    # noise_scale_w=0.8,  # 调整音素持续时间的变化
    # length_scale=1.0    # 调整语音长度
)
all_audio_segments = []
# for i, (gs, ps, audio) in enumerate(generator):
#     print(i)  # i => index
#     print(gs) # gs => graphemes/text
#     print(ps) # ps => phonemes
#     display(Audio(data=audio, rate=24000, autoplay=i==0))
#     sf.write(f'{i}.wav', audio, 24000)


for i, (gs, ps, audio) in enumerate(generator):
    print(f"处理第 {i+1} 段:")
    print(f"文本: {gs}")  # 打印当前处理的文本
    print(f"音素: {ps}")  # 打印音素
    all_audio_segments.append(audio)
    
    # 可以选择是否保存单独的片段
    sf.write(f'./output/segment_{i}.wav', audio, 24000)

# 合并所有音频片段
import numpy as np
combined_audio = np.concatenate(all_audio_segments)
sf.write('./output/complete_audio.wav', combined_audio, 24000)
print("所有片段已合并并保存为 complete_audio.wav")