Moshi:类似chatgpt advanced voice mode的端到端语音问答技术-2. 关键架构

Moshi 的架构由多个组件组成,包括文本语言模型、神经音频编解码器、层次化生成建模和全双工对话建模。

2.1 Helium 文本语言模型

Helium 是一个具有7B参数的文本语言模型,作为Moshi生成对话内容的基础。

实现代码概览
class HeliumModel(nn.Module):
    def __init__(self, vocab_size=32000, d_model=4096, n_heads=32, num_layers=32):
        super(HeliumModel, self).__init__()
        self.tokenizer = Tokenizer(vocab_size)
        self.transformer = Transformer(d_model=d_model, n_heads=n_heads, num_layers=num_layers)
        self.output_layer = nn.Linear(d_model, vocab_size)

    def forward(self, input_ids):
        x = self.tokenizer(input_ids)
        x = self.transformer(x)
        logits = self.output_layer(x)
        return logits
关键点:
  • 模型架构:基于Transformer,具备32层、32个头和4096的模型维度,支持大规模文本数据处理。
  • 输入/输出:输入为文本符号,输出为预测的文本生成符号。

2.2 Mimi 神经音频编解码器

Mimi 是一种神经音频编解码器,它通过残差向量量化(RVQ)将音频编码为离散的音频符号,并能够高效地进行语音重建。

架构图解
音频输入
编码器
RVQ量化器
解码器
重建语音输出
实现代码概览
class MimiAudioCodec(nn.Module):
    def __init__(self, n_quantizers=8, codebook_size=2048, frame_rate=12.5):
        super(MimiAudioCodec, self).__init__()
        self.encoder = Encoder()
        self.quantizer = RVQ(n_quantizers, codebook_size)
        self.decoder = Decoder()
        self.frame_rate = frame_rate

    def forward(self, waveform):
        latent = self.encoder(waveform)
        tokens = self.quantizer(latent)
        reconstructed_waveform = self.decoder(tokens)
        return reconstructed_waveform
关键点:
  • RVQ量化器:Mimi 使用了8个量化器,并对每一帧的音频符号进行12.5Hz的采样率处理。
  • 编码与解码:Mimi通过残差量化和Transformer瓶颈实现高效的语音生成和重建。

2.3 层次化生成建模 (Hierarchical Token Generation)

Moshi 通过 “Inner Monologue” 技术,在生成语音之前先生成文本符号,再生成语义和声学符号。这种方法大大提高了生成语音的语言质量。

架构图解
文本符号生成
语义符号生成
声学符号生成
实现代码概览
class HierarchicalGenerator(nn.Module):
    def __init__(self, text_model, audio_model):
        super(HierarchicalGenerator, self).__init__()
        self.text_model = text_model
        self.audio_model = audio_model

    def forward(self, input_text):
        text_tokens = self.text_model(input_text)
        audio_tokens = self.audio_model(text_tokens)
        return audio_tokens
关键点:
  • Inner Monologue:文本符号作为生成语义和声学符号的前缀,确保生成的语音内容准确且自然。
  • 生成过程:先预测文本符号,再生成相应的语义和声学符号。

2.4 全双工对话建模

Moshi 支持真正的全双工对话模式,能够同时监听用户的语音并生成系统的语音,处理对话中的语音重叠和插话。

实现代码概览
class FullDuplexDialogueModel(nn.Module):
    def __init__(self, user_audio_model, system_audio_model):
        super(FullDuplexDialogueModel, self).__init__()
        self.user_audio_model = user_audio_model
        self.system_audio_model = system_audio_model

    def forward(self, user_audio_input):
        user_tokens = self.user_audio_model(user_audio_input)
        system_response = self.system_audio_model(user_tokens)
        return system_response
关键点:
  • 多流音频建模:Moshi 通过并行处理用户和系统的音频流来支持复杂对话动态,消除传统对话系统中的说话者轮流机制。
  • 实时生成:系统能够根据用户的语音生成即时回应,并处理语音重叠。

上一篇:安全运营中心 (SOC) 团队对其安全工具感到失望


下一篇:【MySQL必知会】事务