0


探索 Meta AI 的多模态语言模型 Spirit LM:融合语音与文本的创新应用

❤️ 如果你也关注大模型与 AI 的发展现状,且对大模型应用开发非常感兴趣,我会快速跟你分享最新的感兴趣的 AI 应用和热点信息,也会不定期分享自己的想法和开源实例,欢迎关注我哦!

微信公众号|搜一搜:蚝油菜花

在这里插入图片描述

🚀 快速阅读

  1. Spirit LM 是由 Meta AI 团队开发的多模态语言模型,能够无缝集成语音和文本数据。
  2. 该模型基于预训练的文本语言模型,通过在文本和语音单元上的持续训练扩展到语音模态。
  3. Spirit LM 具有跨模态语言生成、语义和表达能力、少量样本学习等功能,可应用于语音助手、自动语音识别、文本到语音等多种场景。

正文(附运行示例)

Spirit LM 是什么

Spirit LM 是由 Meta AI 团队推出的一种多模态语言模型,能无缝地混合文本和语音数据。Spirit LM 基于一个预训练的文本语言模型,用持续在文本和语音单元上的训练扩展到语音模态。模型有两个版本:基础版(BASE)和表达版(EXPRESSIVE)。基础版用语音语义单元,除表达版除语义单元外,还用音高和风格单元模拟语音的表达性。Spirit LM 在训练时将语音和文本序列连接为单一的标记集,基于词级交错方法。能生成具有文本模型语义能力的文本,和生成具有语音模型表达能力的语音,Spirit LM 能在少量样本的情况下跨模态学习新任务,如自动语音识别(ASR)、文本到语音(TTS)和语音分类。

Spirit LM 的主要功能

  • 跨模态语言生成:Spirit LM 能生成文本和语音,实现无缝切换。
  • 语义和表达能力:结合文本模型的语义能力和语音模型的表达能力。
  • 少量样本学习:基于少量样本快速学习新任务,如 ASR、TTS 和语音分类。
  • 情感保持:表达版(EXPRESSIVE)能理解和生成具有特定情感的语音和文本。
  • 多模态理解:理解和生成跨模态内容,例如将文本转换为语音或反之。

Spirit LM 的技术原理

  • 预训练和扩展:基于预训练的文本语言模型,用持续在文本和语音单元上的训练来展模型的语音处理能力。
  • 交错训练:用词级交错方法,将语音和文本序列连接为单一的标记集进行训练,实现语音和文本之间的对齐。
  • 双模态标记: - 基础版(BASE):用语音语义单元(如 HuBERT 标记)。- 表达版(EXPRESSIVE):除语义单元外,结合音高(F0)和风格单元捕捉语音的表达性。
  • 编码和解码: - 编码器:将语音转换为标记,用 HuBERT 等模型进行语音编码。- 解码器:将标记还原为原始模态(文本或语音)。
  • 数据集和训练: - 用大规模的文本数据集和语音数据集。- 基于对齐的语音+文本数据集进行交错训练。

如何运行 Spirit LM

安装设置

首先,您需要设置环境。可以使用 Conda 或 Pip 来安装所需的依赖项。

  • Conda
conda env create -f env.yml
pip install -e '.[eval]'
  • Pip
pip install -e requirements.txt
pip install -e '.[eval]'
  • 开发环境(可选) 如果您想要运行测试,可以使用以下命令安装开发依赖项。
pip install -e '.[dev]'

检查点设置

检查点设置详情请参阅checkpoints/README.md。

快速开始

快速开始的指南主要包括语音标记化、Spirit LM 生成和 STSP 评估。由于这段篇幅太长,下面就直接演示如何加载预训练模型进行推理,其他的内容请参阅官方文档:

  • 语音标记化:有关语音标记化的详细信息,请参阅spiritlm/speech_tokenizer/README.md。
  • Spirit LM 生成:有关 Spirit LM 模型使用的详细信息,请参阅spiritlm/model/README.md。
  • STSP 评估:有关 STSP 评估的详细信息,请参阅spiritlm/eval/README.md。

模型加载

要加载 Spirit LM 模型,您可以使用以下代码示例。

from spiritlm.model.spiritlm_model import Spiritlm

# 加载基础版7B模型
spirit_lm = Spiritlm("spirit-lm-base-7b")# 加载表达版7B模型
spirit_lm = Spiritlm("spirit-lm-expressive-7b")

生成示例

以下是一些使用 Spirit LM 模型进行文本和语音生成的示例。

  • 生成文本
from spiritlm.model.spiritlm_model import OutputModality, GenerationInput, ContentType
from transformers import GenerationConfig

# 生成文本
spirit_lm.generate(
    output_modality=OutputModality.TEXT,
    interleaved_inputs=[
        GenerationInput(
            content="The largest country in the world is",
            content_type=ContentType.TEXT,)],
    generation_config=GenerationConfig(
        temperature=0.9,
        top_p=0.95,
        max_new_tokens=50,
        do_sample=True,),)
  • 生成语音
# 生成语音
spirit_lm.generate(
    output_modality=OutputModality.SPEECH,
    interleaved_inputs=[
        GenerationInput(
            content="examples/audio/7143-88743-0029.flac",
            content_type=ContentType.SPEECH,)],
    generation_config=GenerationConfig(
        temperature=0.9,
        top_p=0.95,
        max_new_tokens=200,
        do_sample=True,),)

任意生成

# 任意生成
spirit_lm.generate(
    output_modality=OutputModality.ARBITRARY,
    interleaved_inputs=[
        GenerationInput(
            content="examples/audio/7143-88743-0029.flac",
            content_type=ContentType.SPEECH,)],
    generation_config=GenerationConfig(
        temperature=0.9,
        top_p=0.95,
        max_new_tokens=200,
        do_sample=True,),)

更多示例可以在examples/speech_generation/spirit_model.ipynb中找到。

资源


❤️ 如果你也关注大模型与 AI 的发展现状,且对大模型应用开发非常感兴趣,我会快速跟你分享最新的感兴趣的 AI 应用和热点信息,也会不定期分享自己的想法和开源实例,欢迎关注我哦!

微信公众号|搜一搜:蚝油菜花


本文转载自: https://blog.csdn.net/qq_19841021/article/details/143115850
版权归原作者 蚝油菜花 所有, 如有侵权,请联系我们删除。

“探索 Meta AI 的多模态语言模型 Spirit LM:融合语音与文本的创新应用”的评论:

还没有评论