【论文学习】《On Prosody Modeling For ASR+TTS Based Voice Conversion》

本文探讨了自动语音识别(ASR)与文本到语音(TTS)相结合的语音转换(VC)中韵律的重要性,提出了一种新的目标文本预测(TTP)方法,以解决传统源韵律转移(SPT)方法中存在的问题。实验结果显示TTP在多个方面优于SPT。

《On Prosody Modeling For ASR+TTS Based Voice Conversion》论文学习

  摘要

       在语音转换(VC)中,一种在最新的语音转换挑战(VCC) 2020中显示出良好结果的方法是:首先使用自动语音识别(ASR)模型将源语音转录为潜在的语言内容;然后,这些数据被文本到语音(TTS)系统用作输入,以生成转换后的语音。这种范式被称为ASR+TTS,它忽略了韵律的建模,而韵律在语音自然度和转换相似度方面起着重要作用。虽然一些研究者已经考虑过从源语中转移韵律线索,但在训练和转换过程中会出现说话人不匹配的情况。
       为了解决这一问题,本文提出了一种基于目标说话人的语言表征直接预测韵律的方法,即目标文本预测。我们在VCC2020基准上评估了这两种方法,并考虑了不同的语言表征。结果表明,在客观评价和主观评价中,TTP都是有效的。
       
       关键词:语音转换,自动语音识别,文本到语音,韵律,全局风格标记
       

  1 介绍

       在语音转换(voice conversionVC)中,目的是在不改变语言内容的情况下,将源语转换为目标语(《Continuous probabilistic transform for voice conversion》,《Voice Conversion Based on Maximum-Likelihood Estimation of Spectral Parameter Trajectory》)。从信息的角度来看,VC的目标是从源语音中提取语音内容,然后将提取的内容与目标说话人的身份合成转换后的语音。一个理想的VC系统将由识别模块和合成模块两部分组成,这两部分分别执行上述的操作。
       这种范式可以通过自动语音识别(ASR)模型和文本语音转换(TTS)系统的级联直接实现,即ASR+TTS。在最新的语音转换挑战赛2020 (VCC2020)(《Voice Conversion Challenge 2020 - Intra-lingual semi-parallel and cross-lingual voice conversion》)中,ASR+TTS作为基准系统(《The Sequence-to-Sequence Baseline for the Voice Conversion Challenge 2020: Cascading ASR and TTS》),表现最好的系统也实现了这样的框架(《Voice Conversion by Cascading Automatic Speech Recognition and Text-to-Speech Synthesis with Prosody Transfer》),在自然性和相似性方面都展现了最先进的性能。
       
       尽管ASR+TTS范式的研究取得了可喜的成果,但韵律的转换和建模往往被忽视。韵律是讲话中几个基本的前期成分的组合,如音高、重音和停顿,它影响后续的高层次特征,包括情绪和风格。从前文所述的信息角度来看,ASR+TTS中的合成模块负责恢复识别模块丢弃的所有信息。在基于文本的ASR+TTS基线系统(《The Sequence-to-Sequence Baseline for the Voice Conversion Challenge 2020: Cascading ASR and TTS》)中,由于文本到韵律的映射是一对多的,特定的韵律或风格在文本中是不可预测的,因此TTS模型只能从训练数据的统计属性隐式建模韵律模式,导致崩溃,平均韵律风格。
       
       表达性言语合成是一个与之密切相关的研究领域,其目的之一就是控制言语的变异性。最广泛使用的方法之一是使用全局风格标记(GST)(《Style Tokens: Unsupervised Style Modeling, Control and Transfer in End-to-End Speech Synthesis》),使用该标记将引用语音编码到一个固定维度的嵌入(《Towards Endto-End Prosody Transfer for Expressive Speech Synthesis with Tacotron》)中,该嵌入表示为一组预定义风格标记的加权和。因此,在给定文本、说话人身份和参考语音韵律编码的条件生成模型的基础上,构建了一个带有GSTTTS模型(GST-TTS)。许多人将这种框架推广到变分自编码器(VAEs)(《Learning Latent Representations for Style Control and Transfer in End-to-end Speech Synthesis》,《Hierarchical Generative Modeling for Controllable Speech Synthesis》),以增加学习到的嵌入空间的泛化性。另一项工作是通过学习可变长度的韵律嵌入来实现细粒度韵律控制(《Robust and Fine-grained Prosody Control of End-to-end Speech Synthesis》,《FineGrained Robust Prosody Transfer for Single-Speaker Neural Text-To-Speech》)。
       
       上述方法首次应用于(《Transferring Source Style in Non-Parallel Voice Conversion》)中的VC中,称之为源韵律转移(source prosody transfer,SPT)。如图1a所示,参考编码器将源语音作为输入,生成全局韵律嵌入,使转换后的语音的韵律跟随源语音。这一过程在表达性TTS文献(《Towards Endto-End Prosody Transfer for Expressive Speech Synthesis with Tacotron》)中也被称为同文本韵律迁移,因为参考语音和TTS的输入语音包含相同的语言内容,而TTS的输入语音也来源于源语音。在VCC2020中,几个表现最好的团队通过采用带有对抗层的变分参考编码器来帮助解纠缠,从而扩展了SPT(《Voice Conversion by Cascading Automatic Speech Recognition and Text-to-Speech Synthesis with Prosody Transfer》,《Submission from SRCB for Voice Conversion Challenge 2020》),显示了SPT的竞争力。
图1
       尽管如此,(《Voice Conversion by Cascading Automatic Speech Recognition and Text-to-Speech Synthesis with Prosody Transfer》)的消融研究表明SPT对任务1并没有带来任何显著的改善。在基于ASR+TTSVC中,SPT可能是一个次优的韵律建模策略。首先,依赖于目标说话人的TTS训练导致了训练和转换之间的不匹配,因为在训练时目标说话人的语音作为参考编码器的输入,而在转换时使用源说话人的语音。扬声器对抗分类器可以缓解这个问题(《Voice Conversion by Cascading Automatic Speech Recognition and Text-to-Speech Synthesis with Prosody Transfer》,《Submission from SRCB for Voice Conversion Challenge 2020》),但需要仔细的超参数调整。第二,有些情况下SPT是不需要的,如情感VC或重音转换。
       
       在本研究中,我们研究了两种基于ASR+TTSVC韵律建模方法。除了SPT,我们提出了一种新的技术,我们称之为目标文本预测(TTP)。我们借鉴(《Predicting Expressive Speaking Style from Text in End-To-End Speech Synthesis》)的思想,训练一个文本预测(TP)模块,从源语音衍生的文本中生成韵律嵌入。图1b说明了这个过程。TP模块首先在多说话人数据集上使用GST-TTS进行预训练,然后以依赖目标说话人的方式进一步进行微调。因此,与SPT不同,TTP不存在训练和转换之间的不匹配。我们对这项工作的贡献如下:
              (1)我们提出了一种新的基于ASR+TTSVC韵律建模技术TTP,该技术以目标说话人依赖的方式预测韵律。
              (2)我们将SPTTTP两种韵律建模方法应用于三个不同表征的ASR-TTS系统,并在VCC2020的两个任务中对其进行评估。结果表明,TTP总是优于SPT
       

  2 基于 ASR + TTS 的语音转换

    2.1 整体框架和转换过程

       本工作中基于ASR+TTSVC系统是建立在VCC2020的基线系统之上的。如图2所示,该系统由三个模块组成:独立于说话人的识别器,依赖于目标说话人的合成器,以及生成最终语音波形的神经声码器。识别器首先从源语音 X X X开始提取语音内容: Y ^ = R e c o g n i z e r ( X ) \hat{Y}=Recognizer(X) Y^=Recognizer(X)。合成器采用转录和合成转换的声学特征: X ^ = S y n t h e s i z e r ( Y ^ ) \hat{X}=Synthesizer(\hat{Y}) X^=Synthesizer(Y^)。神经声码器最终使用转换后的声学特征作为输入来重建波形。
图2
       

    2.2 中间表示

       语音内容 Y Y Y可以是任何中间表征。除了像在(《The Sequence-to-Sequence Baseline for the Voice Conversion Challenge 2020: Cascading ASR and TTS》)中那样使用文本外,在本工作中,我们还评估以下两种表示。请注意,这项工作的目标是检查三种表现形式的韵律建模技术的有效性,而不是提供它们之间的公平比较。
       
       瓶颈特征(BNF)
       由ASR模型衍生出来的与说话人无关的框架级语音瓶颈特征为内容提供了强有力的线索。这些特征首先在(《Phonetic posteriorgrams for many-to-one voice conversion without parallel data training》)中使用,其中使用了语音后验图(PPG),这是一种时间-类别矩阵,代表每一帧每个语音类别(指单词、音素或多音素)的后验概率。在这项工作中,就像在(《Sequence-to-Sequence Acoustic Modeling for Voice Conversion》)中一样,我们使用ASR模型中最后一个softmax层之前的隐藏表示。
       
       VQW2V
       BNF等特征源自ASR模型,需要使用标签进行监督;这增加了构建这样一个系统的成本,特别是在低资源或跨语言的环境中。另外,一些研究(《Anyto-One Sequence-to-Sequence Voice Conversion using SelfSupervised Discrete Speech Representations》,《The Academia Sinica Systems of Voice Conversion for VCC2020》,《FragmentVC: Any-to-Any Voice Conversion by End-to-End Extracting and Fusing Fine-Grained Voice Fragments With Attention》)采用了在训练中不需要任何标签的自我监督表征,但仍然是说话者独立的和框架上的。在本工作中,我们采用矢量量化的wav2vec (VQW2V)(《vq-wav2vec: Self-Supervised Learning of Discrete Speech Representations》)。
       

    2.3 训练

       ASR:多扬声器数据集 D A S R D_{ASR} D

<think> 嗯,用户现在想了解ASR+LLM+TTS的开发方法,结合之前的空调AI节能讨论,ta可能是智能家居开发者。从引用内容看,用户已经收集了四种技术方案:传统串联方案(引用1-3)、端到端新方案(引用4)、轻量化方案(引用2)和AIoT集成方案(引用3)。 用户的核心诉求是落地实施,需要重点区分场景需求:如果是智能家居产品开发,传统串联方案更成熟;如果是追求自然对话体验,GLM-4-Voice这类端到端模型更合适。开发方法要分步骤说明,特别是模块选型和接口对接这些实操细节。 注意到用户提到“减少性能消耗”(引用2),说明资源受限场景是重要考虑因素。在方案推荐时需要强调:树莓派等设备适合轻量化组合(ASR/TTS选Edge版模型+小参数LLM),而GLM-4-Voice虽然效果更好但需要40系显卡。能耗对比数据也要补充,毕竟用户之前关注空调节能,可能对设备功耗敏感。 技术要点要结构化呈现:把开发流程拆解为硬件准备、模块部署、接口开发三阶段。关键提示放在最后,特别是LLM触发机制这种易错点——用户引用3里提到关键词触发,这点必须展开说明。 最后生成的三个问题都指向具体落地:移动端集成对应轻量化方案,端到端部署针对高端场景,成本优化则是用户隐含需求(从引用2强调“减少性能消耗”可推测)。 </think> 以下是基于ASR+LLM+TTS开发语音交互系统的完整方法指南,结合引用资料的关键技术点: --- ### 一、开发流程框架 ```mermaid graph TD A[语音输入] --> B(ASR语音识别) B --> C{关键词过滤} C --包含触发词--> D(LLM智能推理) C --不包含--> E[放弃响应] D --> F(TTS语音合成) F --> G[音频输出] ``` *流程说明:需设置唤醒词过滤机制(如引用3的关键词检测kwords)避免无效触发* --- ### 二、核心模块实现方法 #### 1. **ASR模块(耳朵)** - **推荐方案**: - 轻量化:Vosk(离线库,支持树莓派)[^2] - 云端API:阿里云智能语音交互 - **关键代码**: ```python # 基于Vosk的实时识别(引用2方案) from vosk import Model, KaldiRecognizer model = Model("model_path") rec = KaldiRecognizer(model, 16000) while True: data = mic_stream.read(4096) if rec.AcceptWaveform(data): text = json.loads(rec.Result())["text"] # 获取识别文本 if text.startswith("小优"): # 关键词触发 process_command(text) ``` #### 2. **LLM模块(大脑)** - **选型建议**: | 场景 | 推荐方案 | 响应延迟 | 硬件需求 | |----------------|-------------------------|----------|----------------| | 本地部署 | ChatGLM3-6B | 2-3s | RTX 3060↑ | | 云端API | 通义千问/Kimi | 1-2s | 无 | | 端侧优化 | Phi-2(2.7B量化版) | <1s | 树莓派5 | - **对话管理**: ```python def llm_response(query): # 清理唤醒词(如“小优,今天天气怎样?” → “今天天气怎样”) cleaned_query = query.replace("小优", "").strip() # 调用LLM API(以OpenAI格式为例) response = openai.ChatCompletion.create( model="gpt-3.5-turbo", messages=[{"role":"user", "content":cleaned_query}] ) return response.choices[0].message.content ``` #### 3. **TTS模块(嘴巴)** - **优选方案**: - 自然度优先:OpenTTS(支持中英混合) + VITS模型 - 低延迟需求:Edge-TTS(浏览器原生API) - **音频合成**: ```python # 使用pyttsx3本地合成(引用2轻量化方案) import pyttsx3 def text_to_speech(text): engine = pyttsx3.init() engine.setProperty('rate', 150) # 语速 engine.save_to_file(text, 'output.mp3') engine.runAndWait() play_audio('output.mp3') # 调用播放器 ``` --- ### 三、系统集成方案 #### 方案对比 | **架构** | 优势 | 适用场景 | 参考来源 | |-----------------|--------------------------|-------------------|--------------| | **传统串联式** | 模块可替换,调试灵活 | 智能家居/客服系统 | [^1][^3] | | **端到端模型** | 延迟低,拟人化程度高 | 高端消费电子产品 | [^4] | | **混合架构** | 平衡性能与成本 | 工业物联网设备 | [^3] | #### 关键集成技术(引用3) 1. **事件驱动机制**:文件监听实现模块解耦 ```python from watchdog.observers import Observer from watchdog.events import FileSystemEventHandler class AudioHandler(FileSystemEventHandler): def on_created(self, event): if event.src_path.endswith(".wav"): asr_result = transcribe(event.src_path) # 触发ASR if asr_result.startswith(keywords): llm_response = generate_response(asr_result) tts(llm_response) # 触发TTS ``` 2. **能耗优化技巧**: - ASR/TTS采用边缘计算(引用2) - LLM请求批处理(合并10ms内请求) - 设置5分钟无操作休眠(引用3) --- ### 四、调试与优化 1. **QPS压力测试**: ```shell # 模拟高并发请求 ab -n 100 -c 10 -p queries.json http://your-api/chat ``` *目标值:树莓派方案QPS≥3,云端方案QPS≥50* 2. **关键指标优化**: | 模块 | 优化目标 | 方法 | |------|-------------------|--------------------------| | ASR | 识别率>95% | 加入本地噪声样本训练 | | LLM | 响应延迟<800ms | 模型量化+缓存常见问答 | | TTS | MOS评分≥4.0 | 情感注入技术(Prosody控制) | --- > **新一代方案参考**:GLM-4-Voice端到端模型(引用4)直接实现语音语音转换,但需注意: > - 需40GB+显存训练 > - 推理延迟约1.2s(RTX 4090) > - 适合对话机器人等高端场景
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值