[论文解读] Efficient Dynamic WFST Decoding for Personalized Language Models
本文提出一种两层缓存机制——公共缓存和私有缓存,以加速语音识别中个性化语言模型的动态WFST解码。通过全局预组合静态图组件,并在本地缓存用户特定的语言模型状态,该方法在多轮对话中将解码时间减少五倍,WER影响极小,且显著提升了高并发系统中的内存效率。
We propose a two-layer cache mechanism to speed up dynamic WFST decoding with personalized language models. The first layer is a public cache that stores most of the static part of the graph. This is shared globally among all users. A second layer is a private cache that caches the graph that represents the personalized language model, which is only shared by the utterances from a particular user. We also propose two simple yet effective pre-initialization methods, one based on breadth-first search, and another based on a data-driven exploration of decoder states using previous utterances. Experiments with a calling speech recognition task using a personalized contact list demonstrate that the proposed public cache reduces decoding time by factor of three compared to decoding without pre-initialization. Using the private cache provides additional efficiency gains, reducing the decoding time by a factor of five.
研究动机与目标
- 提升基于动态WFST的个性化语言模型语音识别的解码效率。
- 解决实时语音助手中用户特定语言模型动态组合带来的高延迟与内存开销问题。
- 实现在多用户、多线程生产环境中低延迟、可扩展的个性化语言模型部署。
- 在不损害识别准确率的前提下,降低动态图组合的计算成本。
提出的方法
- 引入两层缓存机制:公共缓存预组合WFST的静态HCL部分,全局共享。
- 实现私有缓存,用于存储并重用每个用户的个性化语言模型FST,该缓存在用户会话内的各轮对话间共享。
- 采用基于广度优先搜索(BFS)的简化预初始化方法,预组合HCL图中的非终结状态。
- 提出一种数据驱动的预初始化技术,利用少量历史语音输入引导状态扩展,相比BFS效率更高。
- 结合两种预初始化方法,实现最佳性能与内存效率。
- 应用FST替换机制,在解码过程中动态替换基于类的语言模型为用户特定的FST,最大限度减少按需组合的开销。
实验结果
研究问题
- RQ1预组合静态WFST组件是否能降低动态语言模型场景下的解码延迟?
- RQ2与广度优先搜索相比,数据驱动的预初始化方法在解码速度和内存效率方面表现如何?
- RQ3为多轮对话系统中的用户特定语言模型设置私有缓存,能在多大程度上提升效率?
- RQ4在高并发环境下,预组合图与完全动态图相比,每增加一个并发请求的边际内存成本是多少?
主要发现
- 使用公共缓存进行预组合,相比完全动态解码,解码时间减少为原来的三分之一。
- 数据驱动的预初始化方法在RTF降低和内存效率方面均优于广度优先搜索。
- 对于五轮对话的多轮会话,私有缓存相比完全动态解码将解码时间减少为原来的五分之一。
- 预组合图相比完全动态图,每增加一个并发请求的边际内存成本降低1.5倍。
- 将BFS预组合扩展至五步以上无法进一步降低RTF,且由于状态组合频率低,反而导致内存使用增加。
- 结合两种预初始化方法可实现最佳性能,RTF更低,p50/p95百分位数差距更小。
更好的研究,从现在开始
从阅读论文到最终审阅,大幅缩短您的研究时间。
无需绑定信用卡
本解读由 AI 生成,并经人工编辑审核。