最近,Useful Sensors开源了全新语音模型Moonshine,旨在能够更高效地处理音频数据。相比于OpenAI的Whisper,它在计算资源的使用上更为经济,处理速度快五倍。这一新模型专为在资源有限的硬件上实现实时应用而打造,具有灵活的架构。
Moonshine不仅在推理效率、性能进行大幅度优化,同时对输入语音进行了极限压缩高达384倍,而Whisper只有320倍。
Moonshine模型是基于经典的Transformer架构开发而成,其输入是采样率为16,000 Hz的音频信号。编码器部分负责将输入的音频信号转换为一系列中间表示,而解码器部分则将这些中间表示转换为输出的文本序列。
Moonshine模型在位置编码方面采用了RoPE(旋转位置嵌入),这是一种新型的位置编码方法。传统的绝对位置嵌入使用固定的模式来编码序列中每个元素的位置信息,但这种方法在处理可变长度的序列时存在局限性。RoPE通过将位置信息编码为旋转矩阵,使得模型能够更加灵活地处理不同长度的序列,同时保持了对序列顺序的敏感性。这种编码方式在Moonshine模型中发挥了关键作用,使得它能够有效地处理不同长度的语音片段,而不需要对输入数据进行零填充,从而减少了算力负担。
Moonshine模型的输入是16,000 Hz采样的音频信号,不依赖于Mel频谱图等手工工程特征提取,而是直接对原始音频信号进行处理。这是通过一个短干实现的,由三个卷积层组成,这些卷积层的步长分别为64、3和2,可有效地将输入数据压缩了384倍。这与Whisper模型的320倍相比,不仅减少了模型的计算需求,还有助于模型更快地处理音频数据。
在模型的内部结构上,Moonshine采用了自注意力机制,这是一种允许模型在处理序列数据时动态地关注序列的不同部分的技术。自注意力机制使得模型能够捕捉到语音信号中的复杂模式,并且能够根据上下文信息来调整其关注点,在处理语音识别任务时尤为重要。因为它需要模型能够理解语音信号中的各种声学特征,并且能够在不同的语境中正确地识别和生成词汇。
在模型的输出端,Moonshine使用了字节级BPE(字节对编码)文本分词器来处理英文文本。这种分词器能够将文本分解为一系列的字节对,这些字节对作为模型的输入单元。原始的词汇表大小为32,000,但为了未来的扩展,研究人员还增加了768个特殊标记。这种分词方法的选择是为了提高模型处理文本数据的灵活性和效率。
训练环境方面,Moonshine模型采用了32个H100 GPU组成的算力集群进行预训练。为了充分利用这些GPU资源,研究人员使用了Huggingface的Accelerate库来实现GPU数据并行性,允许模型在多个GPU上同时进行训练,从而显著提高了训练的效率。
研究人员还采用了BF16混合精度优化技术,通过使用较低精度的浮点数来减少计算过程中的内存消耗和计算延迟,同时仍然保持了足够的数值精度。这种优化对于大规模的深度学习模型尤其重要,可以在不牺牲模型性能的前提下显著降低训练成本。
研究人员在LibriSpeech、AMI、Gigaspeech等数据集上与Whisper进行了多维度对比测试,涵盖说话人、录音条件和噪声等不同环境,以此来评估Moonshine性能。结果显示,Moonshine在计算效率、词错率、适应性、噪声干扰等方面都优于Whisper。