Cross-speaker Style Transfer with Prosody Bottleneck in Neural Speech Synthesis

作者:
单位:
会议:

abstract

风格迁移的事情一直没做好主要有两个原因:(1)单条语音中得到的style embedding很难实现任意文本的细粒度风格控制;(2)style embedding中的content/text, prosody, and speaker timbre高度耦合,因此想要独立的控制其中一个部分很难。

introduction

风格迁移的意义:传统的风格迁移是让说话人录制多种风格的据用于合成,但是有的场景下没有说话人多种风格的数据(或者说话人无法录制指定风格的数据), cross-speaker style transfer就非常重要了。
speaking style transfer分成:

  • prosody transfer:txt-paired reference speech拿到细粒度的embedding,但是问题是真实场景中的pair数据(reference speech的文本和要合成的文本是一致的)很难获得;
  • style transfer:从reference speech中拿到reference embedding,用于代表reference speech的风格,然后控制语音的合成。但是,reference embedding中混合有content和timbre的信息。而且,风格很多是由局部的信息表现的,但是提供的是一个global embedding,因此很难还原细粒度的风格。

Related Work

  • prosody transfer:本方法是基于prosody bottleneck sub-network得到的,不是来自于reference speech。
  • style transfer:之前的方法更多是intra-speaker的风格迁移,本方法实现了保存source speech(另一个说话人)phn-level prosody,和target speaker的音色。比之前的所有方法路鲁棒性更强,更加细粒度。

model arch

在这里插入图片描述

  • 输入txt-emb, spk-emb, style-emb(global info),预测ps/es/ds,添加prosody loss,然后再次编码送给decoder
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
非常抱歉,看来在我之前的回答中犯了一个错误。我混淆了 `gradio` 和 `gr` 的命名空间。 在 `gradio` 中,下载组件的正确类名是 `gradio.outputs.FileDownload` 而不是 `gradio.outputs.Download`。因此,您需要相应地修改代码: ```python import gradio as gr def create_calback(net_g: SynthesizerTrn, tts_front: VITS_PinYin): def tts_calback(text, dur_scale): if limitation: text_len = len(re.sub("\[([A-Z]{2})\]", "", text)) max_len = 150 if text_len > max_len: return "错误:文本太长[限定150字]", None phonemes, char_embeds = tts_front.chinese_to_phonemes(text) input_ids = cleaned_text_to_sequence(phonemes) with torch.no_grad(): x_tst = torch.LongTensor(input_ids).unsqueeze(0).to(device) x_tst_lengths = torch.LongTensor([len(input_ids)]).to(device) x_tst_prosody = torch.FloatTensor( char_embeds).unsqueeze(0).to(device) audio = net_g.infer(x_tst, x_tst_lengths, x_tst_prosody, noise_scale=0.5, length_scale=dur_scale)[0][0, 0].data.cpu().float().numpy() del x_tst, x_tst_lengths, x_tst_prosody # 修改下载文件的默认存放位置 output_filepath = "/path/to/output/file.wav" # 指定下载文件的存放路径 return "成功", gr.outputs.FileDownload(output_filepath, mime_type="audio/wav") return tts_calback ``` 请确保在代码中添加了 `import gradio as gr`,并使用 `gr.outputs.FileDownload` 来创建下载文件的输出。 非常抱歉给您带来的困惑,希望这次修改能够解决问题。如有任何其他问题,请随时提问!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值