【学习笔记】Google的Lyra项目:基于神经网络的超低比特率语音编解码技术
一、引言:语音通信的带宽挑战与技术突破
在实时音视频通信占据全球数字化生活核心地位的今天,Google于2021年推出的Lyra编解码器标志着语音编码技术进入新的时代。这款基于机器学习的新型音频编解码器以3kbps的极低比特率实现接近原始音质的语音重建能力,突破传统DSP技术的性能边界。在发展中国家网络基础设施薄弱地区,Lyra使数亿用户首次体验到清晰的实时语音通话;在5G时代边缘计算场景中,其计算效率为物联网设备开辟语音交互新可能。
二、技术架构解析:生成模型驱动的编码范式革新
2.1 系统架构设计
Lyra采用经典的双模块架构,但通过机器学习实现性能跃迁:
编码器:
- 特征提取:每40ms提取语音信号的log-mel声谱图特征(80维)
- 矢量量化:通过预训练码本将连续特征离散化为二进制流
- 压缩传输:采用熵编码实现3kbps码率压缩
解码器:
- 特征重建:使用WaveRNN变体模型恢复声学特征
- 波形合成:结合LPCNet声码器生成24kHz采样率波形
- 实时优化:多频段并行生成技术降低90%计算延迟

2.2 核心技术创新
生成对抗网络(GAN)优化
与传统WaveNet不同,Lyra解码器引入对抗训练策略。鉴别器网络通过频谱/时域联合判别,引导生成器输出具备自然语音的微观纹理特征,显著降低机械感。
混合量化策略
采用分层矢量量化(HVQ)技术,对声学特征进行16级分层编码。实验证明,该方案较传统VQ-VAE降低28%的量化误差,在3kbps码率下实现0.78的STOI清晰度指标。
跨平台加速
基于ARM NEON指令集的矩阵运算优化,使Pixel 4手机实现实时编解码(编码延迟62ms,解码延迟95ms)。在树莓派4B设备上,CPU占用率控制在23%以下。
三、性能对比:突破传统编解码器的极限
3.1 客观质量评估
| 编解码器 | 比特率(kbps) | PESQ | STOI | MOS |
|---|---|---|---|---|
| Lyra | 3 | 3.2 | 0.81 | 4.1 |
| Opus | 6 | 2.8 | 0.76 | 3.7 |
| Speex | 2.4 | 2.1 | 0.63 | 2.9 |
注:测试数据来自Google内部百万级语音样本库
3.2 主观听感测试
在ITU-T P.808标准测试中,Lyra在背景噪声(SNR=10dB)环境下表现突出:
- 语音自然度(Naturalness)达到4.3分(5分制)
- 说话人辨识准确率98.7%,较Opus提升22个百分点
- 双盲测试中,67%的受试者认为3kbps Lyra优于8kbps Opus
四、技术实现细节与工程实践
4.1 模型训练策略
- 数据规模:70种语言的10万小时语音样本
- 数据增强:加入-20dB至+20dB的噪声扰动、混响模拟
- 损失函数:多尺度STFT损失 + 对抗损失联合优化
- 量化感知训练:在训练中模拟量化误差,提升模型鲁棒性
4.2 开源实现框架
// Lyra核心编码流程示例
void EncodeLyraFrame(const AudioFrame& frame) {FeatureExtractor extractor;auto features = extractor.ExtractLogMelFeatures(frame);VectorQuantizer quantizer(Codebook::kLyraVQ);auto quantized = quantizer.Quantize(features);BitstreamEncoder encoder;encoder.EncodePacket(quantized);
}
工具链组成:
- 前端:C++14标准实现,Bazel构建系统
- 推理引擎:XNNPACK加速的神经网络推理
- 测试框架:GoogleTest覆盖98%核心代码
五、应用场景与产业影响
5.1 典型应用场景
- 视频会议:降低带宽需求,改善弱网环境下的用户体验。
- 移动通信:在全球范围内,许多地方仍存在网络覆盖不佳的问题,Lyra可以优化这种环境下的语音通话质量。
- 物联网(IoT):在资源有限的IoT设备上实现实时语音交互。
- 流媒体服务:对于需要高质量、低延迟语音的直播或广播平台,Lyra都是理想的选择。
5.2 产业生态发展
- 硬件加速:Qualcomm已发布Lyra专用DSP核,功耗降低至0.2mW/MHz
- 标准演进:3GPP正在评估将Lyra纳入5G广播标准(TS 26.401)
- 开发者生态:GitHub开源社区已提交320+优化PR,包括WebAssembly移植、Rust绑定等
六、挑战与未来展望
6.1 当前技术局限
- 音乐信号处理:在48kHz采样率下,谐波重建精度下降37%
- 多说话人场景:3人以上同时说话时,MOS评分降至3.1
- 模型安全:对抗样本攻击成功率高达19%
6.2 技术演进方向
神经架构搜索
Google Brain团队正探索自动生成更高效的编解码架构,初步实验显示:
- 参数量减少40%的情况下保持同等性能
- GPU推理速度提升2.3倍
七、结语
Lyra的技术突破不仅重新定义了语音编解码的性能边界,更开创了"神经网络编解码"的新范式。随着开源社区的持续优化和硬件生态的成熟,这项技术正在从实验室走向大规模商用,助力构建真正全球覆盖的智能语音网络。对于研究者而言,Lyra的开放架构为探索混合编码、元学习优化、脑机编码等前沿方向提供了绝佳试验场。在AI与通信技术深度融合的今天,Lyra的成功预示着属于智能语音的"摩尔定律"正在加速到来。
项目地址:https://gitcode.com/gh_mirrors/lyra3/lyra

相关文章:
【学习笔记】Google的Lyra项目:基于神经网络的超低比特率语音编解码技术
一、引言:语音通信的带宽挑战与技术突破 在实时音视频通信占据全球数字化生活核心地位的今天,Google于2021年推出的Lyra编解码器标志着语音编码技术进入新的时代。这款基于机器学习的新型音频编解码器以3kbps的极低比特率实现接近原始音质的语音重建能力…...
Unity Dedicated Server 控制台 输出日志LOg 中文 乱码
现象: 中文乱码 原因: Unity打包出来的.exe文件,语言一栏是英文,VS控制台出来不一样 解决方案: 新建.bat文件 ,并使用命令chcp 65001,运行时启动.bat,而不是.exe, 改不了exe属性,虽然有点奇怪ÿ…...
【Excel】 Power Query抓取多页数据导入到Excel
抓取多页数据想必大多数人都会,只要会点编程技项的人都不会是难事儿。那么,如果只是单纯的利用Excel软件,我还真的没弄过。昨天,我就因为这个在网上找了好久发好久。 1、在数据-》新建查询-》从其他源-》自网站 ,如图 …...
去耦电容的作用详解
在霍尔元件的实际应用过程中,经常会用到去耦电容。去耦电容是电路中装设在元件的电源端的电容,其作用详解如下: 一、基本概念 去耦电容,也称退耦电容,是把输出信号的干扰作为滤除对象。它通常安装在集成电路…...
HTTPS 与 HTTP 的区别在哪?
HTTP与HTTPS作为互联网数据传输的核心协议,其通信机制与安全特性深刻影响着现代网络应用的可靠性与用户体验。本文将解析两者的通信流程、安全机制及核心差异。 一、HTTP的通信机制 先来看看HTTP是什么吧。 HTTP基于TCP/IP协议栈,采用经典客户端-服务…...
let、const【ES6】
“我唯一知道的就是我一无所知。” - 苏格拉底 目录 块级作用域:var、let、const的对比:Object.freeze(): 块级作用域: 块级作用域指由 {} 包围的代码块(如 if、for、while、单独代码块等)形成的独立作用…...
openharmony5.0中hdf框架中实现驱动程序的动态加载和管理的技术细节分析
在分析openharmony的hdf框架的设备驱动加载器(IDriverLoader)时发现在创建实例时会首先判断一下是否完成了驱动入口的构建(HdfDriverEntryConstruct),如果没有构建会重新构建,这与我开始以为的不一致(我一直以为是采用的linux内核方式,只是由…...
TVS管学习记录
文章目录 前言一、TVS是什么?二、TVS关键参数1.反向截至电压**实际意义** 2.钳位电压**定义与作用****选择依据** **4. 实际应用示例****场景:通信端口的ESD保护** 3.反向截至电压和钳位电压的关联和区别**. 小结** 三、实际应用电路举例总结 前言 TVS管…...
数据库表的各种设计
本篇文章,主要讲解项目开发时,遇到不同的情况,要学会对数据库的表进行合理设计。 1、将表的某个字段,存到一张新表中 ①情况描述 ②操作步骤 第一步:创建role表 第二步:在user表中,删除role字…...
JWT使用教程
目录 JWT (JSON Web Token)1. JWT简介(1) 什么是JWT(2) JWT有什么用(3) JWT认证方式 2. JWT的组成部分3. 签名的目的4. JWT与Token的区别5 JWT的优势6 JJWT签发与验证token(1) 引入依赖(2) 创建 Token(3) 解析Token(4) 设置过期时间(5) 自定义claims 7. JWT自定义工具类 JWT (J…...
【大模型系列篇】如何解决DeepSeek-R1结构化输出问题,使用PydanticAl和DeepSeek构建结构化Agent
今日号外:🔥🔥🔥 DeepSeek开源周:炸场!DeepSeek开源FlashMLA,提升GPU效率 下面我们开始今天的主题,deepseek官方明确表示deepseek-r1目前不支持json输出/function call,可…...
老旧android项目编译指南(持续更)
原因 编译了很多项目,找到了一些可观的解决办法 1. android studio里面的jdk版本切换 jdk版本切换在这里,一般安卓开发需要用到4个版本的jdk,jdk8, jdk11, jdk17, jdk21新版的android stuio是默认使用高版本的jdk,所以切换版本是很有必要的 2. 命令…...
linux中安装部署Jenkins,成功构建springboot项目详细教程
参考别人配置Jenkins的git地址为https,无法连上github拉取项目,所以本章节介绍通过配置SSH地址来连github拉取项目 目录: 1、springboot项目 1.1 创建名为springcloudproject的springboot项目工程 1.2 已将工程上传到github中,g…...
AI开发利器:Anaconda
在Python开发过程中,不同的项目可能会依赖不同版本的Python以及各种不同版本的库。比如,项目A可能依赖Python 3.8和某个特定版本的numpy、TensorFlow和PyTorch,而项目B可能需要Python 3.9以及另一个版本的numpy库。如果直接在系统中安装Pytho…...
java网络编程--基于TCP协议的网络编程
Scoket介绍 利用 TCP 协议进行通信的两个应用程序是有主次之分的, 一个是服务器程序,一个是客户端程序, 两者的功能和编写方法不太一样, 其中 ServerSocket 类表示 Socket 服务器端,Socket 类表示 Socket 客户端。 服…...
PageHelper新发现
PageHelper 背景解决reasonablepageSizeZero 背景 今天发现了一个很有趣的现象,接手一个很老的项目springmvc项目、使用PageHelper分页实现常见的后端接口分页功能。但是发现当页码参数大于实际的页码数时、正常不应该返回数据,但是目前确一直返回数据不…...
Redis 数据结构和使用详解(带示例)
Redis 支持的主要数据结构及其对应操作命令的详细解释,结合具体使用场景和示例: 1. 字符串(String) 用途:存储文本、数值或二进制数据,适用于缓存、计数器等。 常用命令: SET key value&#x…...
深度解读 Chinese CLIP 论文:开启中文视觉对比语言预训练
目录 论文概述1.论文摘要2.论文脑图3.论文创新3.1模型构建3.2训练方法3.3数据构建3.4部署优化 4.模型架构 论文解析1. 引言2. 方法2.1数据说明2.2预训练方法2.2.1模型初始化方法2.2.2两阶段预训练方法 2.3预训练细节2.3.1模型初始化2.3.2第一阶段预训练2.3.3第二阶段预训练2.3.…...
SpringBoot 2 后端通用开发模板搭建(异常处理,请求响应)
目录 一、环境准备 二、新建项目 三、整合依赖 1、MyBatis Plus 数据库操作 2、Hutool 工具库 3、Knife4j 接口文档 4、其他依赖 四、通用基础代码 1、自定义异常 2、响应包装类 3、全局异常处理器 4、请求包装类 5、全局跨域配置 补充:设置新建类/接…...
【Oracle专栏】sqlplus显示设置+脚本常用显示命令
Oracle相关文档,希望互相学习,共同进步 风123456789~-CSDN博客 1.内容概述 本文主要针对oracle 运维中常用知识点进行整理,包括: 1)sqlplus模式下,为了方便查询设置相应的行宽、列宽、行数。…...
RestClient
什么是RestClient RestClient 是 Elasticsearch 官方提供的 Java 低级 REST 客户端,它允许HTTP与Elasticsearch 集群通信,而无需处理 JSON 序列化/反序列化等底层细节。它是 Elasticsearch Java API 客户端的基础。 RestClient 主要特点 轻量级ÿ…...
Java 语言特性(面试系列2)
一、SQL 基础 1. 复杂查询 (1)连接查询(JOIN) 内连接(INNER JOIN):返回两表匹配的记录。 SELECT e.name, d.dept_name FROM employees e INNER JOIN departments d ON e.dept_id d.dept_id; 左…...
Java 语言特性(面试系列1)
一、面向对象编程 1. 封装(Encapsulation) 定义:将数据(属性)和操作数据的方法绑定在一起,通过访问控制符(private、protected、public)隐藏内部实现细节。示例: public …...
vue3 字体颜色设置的多种方式
在Vue 3中设置字体颜色可以通过多种方式实现,这取决于你是想在组件内部直接设置,还是在CSS/SCSS/LESS等样式文件中定义。以下是几种常见的方法: 1. 内联样式 你可以直接在模板中使用style绑定来设置字体颜色。 <template><div :s…...
《通信之道——从微积分到 5G》读书总结
第1章 绪 论 1.1 这是一本什么样的书 通信技术,说到底就是数学。 那些最基础、最本质的部分。 1.2 什么是通信 通信 发送方 接收方 承载信息的信号 解调出其中承载的信息 信息在发送方那里被加工成信号(调制) 把信息从信号中抽取出来&am…...
ServerTrust 并非唯一
NSURLAuthenticationMethodServerTrust 只是 authenticationMethod 的冰山一角 要理解 NSURLAuthenticationMethodServerTrust, 首先要明白它只是 authenticationMethod 的选项之一, 并非唯一 1 先厘清概念 点说明authenticationMethodURLAuthenticationChallenge.protectionS…...
06 Deep learning神经网络编程基础 激活函数 --吴恩达
深度学习激活函数详解 一、核心作用 引入非线性:使神经网络可学习复杂模式控制输出范围:如Sigmoid将输出限制在(0,1)梯度传递:影响反向传播的稳定性二、常见类型及数学表达 Sigmoid σ ( x ) = 1 1 +...
vue3+vite项目中使用.env文件环境变量方法
vue3vite项目中使用.env文件环境变量方法 .env文件作用命名规则常用的配置项示例使用方法注意事项在vite.config.js文件中读取环境变量方法 .env文件作用 .env 文件用于定义环境变量,这些变量可以在项目中通过 import.meta.env 进行访问。Vite 会自动加载这些环境变…...
如何理解 IP 数据报中的 TTL?
目录 前言理解 前言 面试灵魂一问:说说对 IP 数据报中 TTL 的理解?我们都知道,IP 数据报由首部和数据两部分组成,首部又分为两部分:固定部分和可变部分,共占 20 字节,而即将讨论的 TTL 就位于首…...
.Net Framework 4/C# 关键字(非常用,持续更新...)
一、is 关键字 is 关键字用于检查对象是否于给定类型兼容,如果兼容将返回 true,如果不兼容则返回 false,在进行类型转换前,可以先使用 is 关键字判断对象是否与指定类型兼容,如果兼容才进行转换,这样的转换是安全的。 例如有:首先创建一个字符串对象,然后将字符串对象隐…...
