CCL 2024 | 前沿技术讲习班 | 文本-语音大模型(第1部分)_哔哩哔哩_bilibili

文本-语音大模型

东北大学-肖桐, 小牛翻译; 许晨, 哈工程

传统 NLP 泛式是有监督学习模型, 参数较少, 为特定任务设计; 大模型实现多种任务的大一统

近期工作

Wav2Vec, 参考 BERT 的 Mask, 提取通用的语音表征, 来自 Meta

Whisper, 语音->文本, 来自 OpenAI

USM, 对标 Whisper, 更大规模, 来自谷歌

Seamless, 更大规模, 双向转换来自 Meta

ChatTTS, 文本->语音, 实现模拟人类声调

SealessM4T 扩展, SeamlessExpressive, 实现翻译中的语音风格翻译 (比如多语言即时翻译)

SpeechGen: Prompt 激发 LLM 激发能力, 支持多种语音生成任务

Muzic: 音乐理解与生成

文本与语音的关系

  1. 文本是离散信号, 语音是连续信号

    连续信号如何变成离散信号? 对连续信号采样, 得到连续信号的离散表示

  2. 语音长度显著更长

  3. 模态粒度差异

    例如一个人说话快, 粒度会更大

  4. 语音有模糊的边界切分, 语言有标点符号的明确边界切分

  5. 语音的噪声问题

    这导致语音合成数据的有效性低

  6. 语音多样性

    文本的多样性小于语音 (如风格, 一词多义), 语音多样性 (生理差异, 语言方言, 情感表达, 环境背景, 录取设备)

    语音翻译的工作中, 文本模态辅助, 因为文本模型的多样性显著小于语音

文本-语音大模型的挑战

  1. 语音特征提取

    语音信号密度低, 噪声多

  2. 语音建模

    如何进行长序列语音高效建模

  3. 语音合成

  4. 模态对齐

    肖桐认为, 文本-语音的联合优化比文本-图像更难

语音基础

语音特征提取

  1. 信号处理方法

    MFCC, FBank

  2. 监督模型

    Whisper

  3. 自监督模型

    Wav2vec,HuBERT

信号处理方法, 与数字信号处理有关

  1. 时域特征, 信息量大, 波动大, 噪声多, 如Wav2Vec2
  2. 频域特征, 适合处理复杂信号, 如Whisper
  3. 时域到频域的转换, 傅里叶变换

下面是监督与自监督模型的发展

语音信号离散化

  • 问题: 语音高度非平稳性

  • 先验假设: 短时平稳

  • 采样步长: 如 10ms, 25ms

  • 常用特征: FBank, MFCC

依然存在问题: 序列太长, 帧间信息重复; 存在压缩空间

因此, 语音建模的基础范式: Fbank + CNN 下采样, 一秒钟有 25 个单元

语音高级特征

语音的发展实现了从跟跑语音到跟跑文本的转变 (:doge)

文本高级特征: 预训练模型提取上下文表示, 取代 Embedding 作为下游任务的输入

想训练语音编码器, 标注数据集匮乏, 成本是很高的

“语音的训练起手十几万小时, demo要两万”

文本怎么处理数据缺乏的问题的?

  1. 使用大量无标注数据进行自监督预训练
  2. 使用下游任务少量标注数据进行微调

于是参考 BERT, 诞生 Wav2vec, 实现了输入原始音频而非信号特征作为输入. 但是由于语音信号的连续表征特点, 语音不能简单 mask 操作 (不能 MLM 训练, 回归任务尤为明显)

举个栗子, HuBERT 利用 K-means 聚类得到离散化音频表示, 每个簇认为是一个 token, 然后用 MLM 范式训练

语音建模

核心问题: 长序列问题

  1. 上下文信息依赖问题
  2. 计算复杂度高

如何解决长序列问题?

  1. Transformer 捕捉全局信息, CNN捕捉局部信息
  2. 相对位置注意力机制
  3. Efficient Transformer

细粒度问题

注意力稀疏问题

如何解决细粒度问题?

信息聚合

  1. 暴力下采样对语音特征连续压缩, 不过这样是粗粒度的离散提取语音特征

  2. 所以后续有渐进式聚合方法, 实现 “一边降维一边编码”, 实现细粒度的离散提取语音特征, 这样达到与文本相似的粒度

  3. 多尺度聚合

    引入 NLP 先验, 比如 Word 尺度, Charactor 尺度, Sentence 尺度, “用转录文本的多尺度信息指导语音特征进行渐进式压缩”, 同时实现 “音频特征的语义高质量对齐”.