用LLM提高语音转文本的准确率

news2026/4/18 10:02:29
语音转文本转换也称为自动语音识别ASR或音频转录是将口语音频转换为书面文本的过程生成的文本称为转录稿。虽然基于 Transformer 的模型现已广泛应用于语音转文本转换但对于较小或资源匮乏的语言它们的性能仍然较差。一个转录错误就可能完全改变句子的意思。对于某些语言如芬兰语拆分复合词或扭曲专有名词有时就足以使转录稿令人困惑、误导甚至无法使用。在我们的项目中我们处理一些少数民族语言如芬兰语的语音转文本转换。虽然最先进的模型如 OpenAI 的gpt-4o-transcribe或开源的 Whisper 模型如WhisperX系列提供了令人印象深刻的语音转文本性能但它们对少数民族语言的准确性仍然不如英语等主要语言。最常见的语音转文本错误通常分为三类插入错误模型添加了未被说出的额外词汇删除错误模型删除了被说出的词汇替换错误模型用错误的词汇替换正确的词汇拼写错误拼写错误、形态变化或由发音引起的扭曲这些错误会降低可读性有时甚至完全改变转录稿的含义。微调是提高转录质量的一种方法。但它需要大量标记的音频和文本数据来训练更强的模型而对于许多语言或领域来说这些数据的可用性是一个挑战。在本文中我们将讨论如何评估语音转文本质量识别模型产生的最常见的转录错误开发基于大语言模型LLM的后转录音频转录增强方法并评估该增强方法。这种方法专注于提高芬兰语数据的语音转文本质量然而它可以很容易地定制为任何其他语言。双通道基于大语言模型的增强方法的整体思路如下使用任何语音转文本模型生成转录稿将转录稿发送到大语言模型进行拼写聚焦修复通道通道1将结果发送到大语言模型进行第二个上下文感知修复通道通道2这种方法显著提高了转录稿质量。虽然它最初是为芬兰语设计的但可以通过更新双通道提示词来匹配特定语言的模式从而适配其他语言。转录增强流程使用双通道大语言模型方法作者提供的图片这种方法是我们GAIK 项目工具包的独立软件组件参见此链接可以通过以下方式安装pip install gaik[enhance-transcript]GAIK 工具包 提供了一整套组件和指导用于构建以知识为中心的生成式 AI 解决方案从战略方向到可部署的实现在此链接内容。本文讨论的完整代码可在 GitHub 上找到。让我们开始吧。1. 评估语音转文本质量有两种方法可以评估语音转文本质量。第一种方法是主观的需要手动比较转录文本称为假设与语音对应的正确文本称为参考。另一种方法是客观的使用质量指标比较假设和参考转录稿。我们将在本文中使用这种方法因为它提供了一种一致且可测量的方式来比较转录稿质量。语音转文本质量最常见的客观指标是词错误率WER它衡量假设转录稿中与参考转录稿不同的词汇数量。WER 基于替换、删除和插入错误计算方法如下WER (S D I) / N * 100%其中S 替换数D 删除数I 插入数N 参考转录稿中的总词数WER 越低越好。除了上述指标外我还使用了拼写错误率因为许多语音转文本错误并非完全错误的词汇它们是接近正确的拼写。例如“hammas” 与 “hamas”以及“Vastuuhenkilö” 与 “Vastuu henkilö”。这些基本上是替换错误但它们比不相关的替换更接近预期的词汇。换句话说每个拼写错误都是替换错误但并非每个替换错误都是拼写错误。为了测量这一点我使用了莱文斯坦距离Levenshtein distance它是衡量两个字符串之间相似性的指标。较小的莱文斯坦距离意味着两个词更相似。如果转录稿词元和参考词元之间的归一化距离小于或等于 0.4我将其视为类似拼写的替换。莱文斯坦距离和归一化距离的计算方法如下莱文斯坦距离 min(插入数 删除数 替换数) 归一化距离 莱文斯坦距离 / 参考词元长度我使用 Python 库jiwer来计算 WER、替换率、删除率和插入率。基于莱文斯坦距离的拼写相似性使用 Python 库rapidfuzz计算。side_by_side_compare.py脚本参见 GitHub 仓库对参考和假设文本进行归一化使用jiwer逐词对齐并计算 WER、替换率、删除率、插入率以及单独的拼写错误率等指标。下图展示了如何检测和突出显示上述错误。请注意某些错误可能既是替换错误又是拼写错误。真实文本REF和转录文本HYP并排对比的片段作者提供的图片2. 识别最常见的转录问题在开发基于大语言模型的转录错误修复方法之前我分析了最常见的语音转文本错误。请注意此分析侧重于芬兰语音频记录然而相同的方法可以应用于任何其他语言。为此我分析了多个芬兰语音频记录的参考转录稿和语音转文本假设通过side_by_side_compare.py生成的并排比较。我还使用大语言模型审查这些参考-假设对并识别最常见的错误模式。我在芬兰语转录中发现了以下问题错误的品牌名称和专有名词接近正确的人名变体错误拆分的复合词破损或不一致的连字符扭曲的外来词芬兰语形态错误拼写错误相同术语使用不一致缺失的词汇额外插入的词汇错误的词汇替换其中一些错误不会影响可读性和/或准确性。例如缺失短功能词或添加填充词通常不会非常大地改变句子的整体含义。其他错误可能会影响可读性和准确性。拆分的复合词、扭曲的名称和错误的替换可能使句子令人困惑或完全改变其含义。大多数频繁的语音转文本问题可以通过基于大语言模型的后转录修复方法解决。大语言模型可以利用其对芬兰语拼写、词汇、形态和上下文的了解进行有针对性的更正。我使用此分析设计了一种基于大语言模型的双通道转录稿增强方法。3. 基于大语言模型的双通道转录后增强这种方法在不添加任何额外信息、不删除重要信息和不重新生成完整转录稿的情况下对转录稿进行有针对性的修复。有针对性的修复对于保持转录稿的正确部分完整减少重新生成产生的幻觉可能性同时只关注需要更正的部分非常重要。TranscriptEnhancer软件组件 将这种方法实现为双通道提示词管道。它以原始转录稿由语音转文本模型生成作为输入并生成增强版本以及包含所有更改详细信息的可选结构化输出。在这些实验中我使用 OpenAI 的gpt-5.4模型进行转录稿增强。然而该方法是模型无关的其他模型也应该以相同的方式工作。31 通道1拼写和一致性修复在TranscriptEnhancer中通道1enhance_transcript.py中的PASS1_SYSTEM_PROMPT专注于更正拼写并在整个转录稿中保持一致性。它不考虑句子结构或语法。它查看单个词元并对它们进行归一化。通道1的主要目标是更正拼写错误归一化重复术语使它们一致修复专有名词的大小写修复明显的复合词分词问题完全按原样保留数字通道1保持严格的字数不添加或删除词汇因为激进的改写可能会引入幻觉。我发现保持编辑最小化使输出更加安全。通道1中最重要的规则是绝不删除词汇保持标点和词序不变只进行局部更正除非预期拼写明显否则保留专有名称不重新解释数字如果不确定保持原样不变完整的通道1提示词PASS1_SYSTEM_PROMPT请参阅 GAIK 工具包的enhance_transcript.py软件组件。3.2 通道2基于上下文的修复通道2enhance_transcript.py中的PASS2_SYSTEM_PROMPT接收通道1的输出并修复需要句子级上下文的部分。与按词元工作的通道1不同通道2跨周围的从句阅读以决定是否需要修复。通道2的主要目标是合并拆分的复合词拆分错误合并的词修复连字符插入缺失的短功能词提高整个转录稿的一致性我也在通道2中保持严格的规则。我不想让模型将转录稿改写成精美的书面芬兰语。我希望它忠实于口语芬兰语因为如果转录稿变得过于精美它就不再像口语了。我在通道2中包含了一个插入预算。模型每100个词的转录稿最多可以插入2个词。这有助于降低产生幻觉或不必要的添加的风险。通道2中最重要的规则是保留口语芬兰语保持编辑小而局部绝不改写整个句子只在语法强烈需要时才插入短功能词绝不编造名称、品牌或事实不确定的情况保持原样不变完整的通道2提示词PASS2_SYSTEM_PROMPT请参阅 GAIK 工具包的enhance_transcript.py软件组件。3.3 构建 TranscriptEnhancer 组件为了使双通道工作流可重用我将其打包成一个名为TranscriptEnhancer的类它将双通道大语言模型增强管道封装到一个可重用的对象中。enhancer TranscriptEnhancer( api_configconfig, use_azureFalse, # 使用标准 OpenAI API 密钥 )enhance_text()方法从字符串中读取转录稿enhance_file()方法从文本文件中读取转录稿。当调用TranscriptEnhancer类的enhance_text()或enhance_file()方法时转录稿会经过通道1和通道2。两个通道完成后类返回一个包含原始转录稿和增强版本的TranscriptEnhancerResult对象。该类还接受一些可选参数使分析更容易。如果generate_summaryTrue组件会计算增强过程中进行了多少次插入、删除和替换。如果diff_chunksTrue它会返回转录稿中哪些部分发生更改的列表。两种方法都使用SequenceMatcher并在两个通道完成后的最终结果上操作。可以通过additional_instructions传递额外指令这些指令会附加到第二通道提示词中。此选项可用于需要额外规则的特定领域转录稿例如保留公司名称或产品术语。最终结果存储在 Pydantic 模型中可以使用model_dump()或model_dump_json()导出为 Python 字典或 JSON 对象。有关TranscriptEnhancerResult类的完整实现请参阅 GAIK 工具包的 enhance_transcript.py 脚本。以下是导入、初始化和使用TranscriptEnhancer对象的示例。此示例存在于 GitHub 仓库 的enhanced_transcript_example.py中。TranscriptEnhancer类作为 GAIK 工具包的软件组件导入。从 GAIK 工具包的config.py导入的get_openai_config方法配置并创建 OpenAI 和 Azure 客户端。相同的配置脚本还设置了大语言模型名称在本例中为gpt-5.4。当我们使用 OpenAI 的 API 密钥时我们设置use_azure False。from gaik.software_components.enhance_transcript import ( TranscriptEnhancer, get_openai_config, ) config get_openai_config(use_azureFalse) enhancer TranscriptEnhancer(api_configconfig) # 从那里我们可以增强原始字符串enhancer.enhance_text # 或文本文件enhancer.enhance_file。 result enhancer.enhance_file( transcript_file, generate_summaryTrue, diff_chunksTrue, additional_instructions( 完全按原样保留所有公司名称。 ), )当generate_summaryTrue时结果包含更改了多少词以及以何种方式更改的详细信息。CorrectionSummary(total_changes3, insertions0, deletions0, substitutions3)当diff_chunksTrue时结果包含原始和增强转录稿之间所有修改部分的列表。result enhancer.enhance_text( transcript_textHei, 23.8.2025 Vetämän Kaltenbach-sahalla viereinen turva-aita toimii yleisenä liinatelineenä. Vastuu henkilö otti havainnon käsittelyyn., diff_chunksTrue, ) for chunk in result.diff_chunks: print(chunk) # DiffChunk(kindsubstitute, originalVetämän, correctedVetämön) # DiffChunk(kindsubstitute, originalVastuu henkilö, correctedVastuuhenkilö)每个DiffChunk都有一个kind属性值为substitute、insert或delete。这可用于准确检查更改了什么、将更正输入审查 UI或分析大批量转录稿的增强行为。TranscriptEnhancer返回一个TranscriptEnhancerResult。完整结构使用model_dump_json()序列化{ original_text: Hei, 23.8.2025 Vetämän Kaltenbach-sahalla viereinen turva-aita toimii yleisenä liinatelineenä. Vastuu henkilö otti havainnon käsittelyyn., enhanced_text: Hei, 23.8.2025 Vetämön Kaltenbach-sahalla viereinen turva-aita toimii yleisenä liinatelineenä. Vastuuhenkilö otti havainnon käsittelyyn., source_file: Sample.txt, correction_summary: { total_changes: 3, insertions: 0, deletions: 1, substitutions: 2 }, diff_chunks: [ {kind: substitute, original: Vetämän, corrected: Vetämön}, {kind: substitute, original: Vastuu henkilö, corrected: Vastuuhenkilö} ] }4. 评估结果为了评估转录稿增强方法的有效性我使用了前面讨论的相同指标WER、拼写错误率以及插入率、删除率和替换率。我使用不同的语音转文本模型生成了15个转录稿。每个语音转文本模型为同一组15个音频文件生成转录稿。对于每个音频文件我还通过让芬兰语母语者听录音并转录来手动创建参考转录稿。用于从不同语音转文本模型生成转录稿的代码可在 GitHub 仓库的transcribers文件夹中找到。每个转录稿然后通过 GAIK 工具包的转录稿增强组件进行增强。增强版本与原始语音转文本输出和手动创建的参考转录稿进行比较。比较使用eval_enhanced.py脚本参见 GitHub 仓库进行。此脚本读取参考转录稿、原始假设及其增强版本。然后使用jiwer进行词对齐和使用rapidfuzz进行基于莱文斯坦距离的拼写错误检测计算 WER、拼写错误率以及插入率、删除率和替换率。结果汇总每个语音转文本模型的所有转录稿。下图显示了增强前后的整体 WER。多个模型的原始和增强转录稿的词错误率结果显示所有测试模型的 WER 都有所降低。最大的改进出现在芬兰语微调的 WhisperX 模型whisper-large-finnish-v3-ct2-parameters中。OpenAI 的gpt-4o-transcribe其 WER 已经最低仍然从增强方法中受益平均 WER 降低了1.33个百分点。下表细分了 WER 的各个组成部分包括替换率、删除率、插入率和拼写错误率。语音转文本模型基准测试 — 原始 vs 增强由于增强提示词中的严格约束删除率和插入率要么保持不变要么仅略有降低除了 WhisperX large-v3 的略微增加。通道1禁止任何词的添加或删除通道2强制执行严格的插入预算每100个词最多插入两个词。假设中已经存在的删除语音转文本模型在转录过程中完全遗漏的词无法通过后处理单独恢复因为在该阶段没有可用的音频信息来重建所说的内容。最显著的改进是在拼写和替换错误方面。由于通道1的直接作用所有模型的拼写错误率都大幅下降通道1针对接近正确的词元、不一致的术语拼写和大小写错误。替换率也遵循类似的模式各模型降低了2-4个百分点。这与通道2修复复合词合并、连字符修复和外来词归一化的性质一致。下图显示了原始和增强转录稿的并排差异视图。修改的词元在原始转录稿中以红色突出显示在更正版本中以绿色突出显示。在此示例中更正是拼写和形态修复而周围的文本完全保持不变。原始和更正转录稿的截图## 5. 如何适配其他语言带有文档的完整源代码可在 GitHub 上找到。TranscriptEnhancer软件组件目前专为芬兰语音设计其中PASS1_SYSTEM_PROMPT和PASS2_SYSTEM_PROMPT编码了芬兰语特定的行为。然而拼写规则、词修复逻辑、口语形式保留列表、功能词插入白名单和语法安全规则都可以修改为任何其他语言。要将组件适配为不同语言唯一需要更改的部分是提示词。以下是可以完成的方法通道1将芬兰语正字法规则和一致性归一化指南替换为目标语言的等效规则。应用相同的方法来识别目标语言中反复出现的性能问题错误。更新任何特定于语言的示例。通道2将功能词白名单替换为目标语言的等效集合。更新复合词处理规则、口语形式保留指令和语法安全规则。PASS1_SYSTEM_PROMPT和PASS2_SYSTEM_PROMPT从包中导出因此可以在不分叉完整实现的情况下读取、修改并传递回作为新语言变体的基础。原文链接用LLM提高语音转文本的准确率 - 汇智网

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2504018.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

SpringBoot-17-MyBatis动态SQL标签之常用标签

文章目录 1 代码1.1 实体User.java1.2 接口UserMapper.java1.3 映射UserMapper.xml1.3.1 标签if1.3.2 标签if和where1.3.3 标签choose和when和otherwise1.4 UserController.java2 常用动态SQL标签2.1 标签set2.1.1 UserMapper.java2.1.2 UserMapper.xml2.1.3 UserController.ja…

wordpress后台更新后 前端没变化的解决方法

使用siteground主机的wordpress网站,会出现更新了网站内容和修改了php模板文件、js文件、css文件、图片文件后,网站没有变化的情况。 不熟悉siteground主机的新手,遇到这个问题,就很抓狂,明明是哪都没操作错误&#x…

网络编程(Modbus进阶)

思维导图 Modbus RTU(先学一点理论) 概念 Modbus RTU 是工业自动化领域 最广泛应用的串行通信协议,由 Modicon 公司(现施耐德电气)于 1979 年推出。它以 高效率、强健性、易实现的特点成为工业控制系统的通信标准。 包…

UE5 学习系列(二)用户操作界面及介绍

这篇博客是 UE5 学习系列博客的第二篇,在第一篇的基础上展开这篇内容。博客参考的 B 站视频资料和第一篇的链接如下: 【Note】:如果你已经完成安装等操作,可以只执行第一篇博客中 2. 新建一个空白游戏项目 章节操作,重…

IDEA运行Tomcat出现乱码问题解决汇总

最近正值期末周,有很多同学在写期末Java web作业时,运行tomcat出现乱码问题,经过多次解决与研究,我做了如下整理: 原因: IDEA本身编码与tomcat的编码与Windows编码不同导致,Windows 系统控制台…

利用最小二乘法找圆心和半径

#include <iostream> #include <vector> #include <cmath> #include <Eigen/Dense> // 需安装Eigen库用于矩阵运算 // 定义点结构 struct Point { double x, y; Point(double x_, double y_) : x(x_), y(y_) {} }; // 最小二乘法求圆心和半径 …

使用docker在3台服务器上搭建基于redis 6.x的一主两从三台均是哨兵模式

一、环境及版本说明 如果服务器已经安装了docker,则忽略此步骤,如果没有安装,则可以按照一下方式安装: 1. 在线安装(有互联网环境): 请看我这篇文章 传送阵>> 点我查看 2. 离线安装(内网环境):请看我这篇文章 传送阵>> 点我查看 说明&#xff1a;假设每台服务器已…

XML Group端口详解

在XML数据映射过程中&#xff0c;经常需要对数据进行分组聚合操作。例如&#xff0c;当处理包含多个物料明细的XML文件时&#xff0c;可能需要将相同物料号的明细归为一组&#xff0c;或对相同物料号的数量进行求和计算。传统实现方式通常需要编写脚本代码&#xff0c;增加了开…

LBE-LEX系列工业语音播放器|预警播报器|喇叭蜂鸣器的上位机配置操作说明

LBE-LEX系列工业语音播放器|预警播报器|喇叭蜂鸣器专为工业环境精心打造&#xff0c;完美适配AGV和无人叉车。同时&#xff0c;集成以太网与语音合成技术&#xff0c;为各类高级系统&#xff08;如MES、调度系统、库位管理、立库等&#xff09;提供高效便捷的语音交互体验。 L…

(LeetCode 每日一题) 3442. 奇偶频次间的最大差值 I (哈希、字符串)

题目&#xff1a;3442. 奇偶频次间的最大差值 I 思路 &#xff1a;哈希&#xff0c;时间复杂度0(n)。 用哈希表来记录每个字符串中字符的分布情况&#xff0c;哈希表这里用数组即可实现。 C版本&#xff1a; class Solution { public:int maxDifference(string s) {int a[26]…

【大模型RAG】拍照搜题技术架构速览:三层管道、两级检索、兜底大模型

摘要 拍照搜题系统采用“三层管道&#xff08;多模态 OCR → 语义检索 → 答案渲染&#xff09;、两级检索&#xff08;倒排 BM25 向量 HNSW&#xff09;并以大语言模型兜底”的整体框架&#xff1a; 多模态 OCR 层 将题目图片经过超分、去噪、倾斜校正后&#xff0c;分别用…

【Axure高保真原型】引导弹窗

今天和大家中分享引导弹窗的原型模板&#xff0c;载入页面后&#xff0c;会显示引导弹窗&#xff0c;适用于引导用户使用页面&#xff0c;点击完成后&#xff0c;会显示下一个引导弹窗&#xff0c;直至最后一个引导弹窗完成后进入首页。具体效果可以点击下方视频观看或打开下方…

接口测试中缓存处理策略

在接口测试中&#xff0c;缓存处理策略是一个关键环节&#xff0c;直接影响测试结果的准确性和可靠性。合理的缓存处理策略能够确保测试环境的一致性&#xff0c;避免因缓存数据导致的测试偏差。以下是接口测试中常见的缓存处理策略及其详细说明&#xff1a; 一、缓存处理的核…

龙虎榜——20250610

上证指数放量收阴线&#xff0c;个股多数下跌&#xff0c;盘中受消息影响大幅波动。 深证指数放量收阴线形成顶分型&#xff0c;指数短线有调整的需求&#xff0c;大概需要一两天。 2025年6月10日龙虎榜行业方向分析 1. 金融科技 代表标的&#xff1a;御银股份、雄帝科技 驱动…

观成科技:隐蔽隧道工具Ligolo-ng加密流量分析

1.工具介绍 Ligolo-ng是一款由go编写的高效隧道工具&#xff0c;该工具基于TUN接口实现其功能&#xff0c;利用反向TCP/TLS连接建立一条隐蔽的通信信道&#xff0c;支持使用Let’s Encrypt自动生成证书。Ligolo-ng的通信隐蔽性体现在其支持多种连接方式&#xff0c;适应复杂网…

铭豹扩展坞 USB转网口 突然无法识别解决方法

当 USB 转网口扩展坞在一台笔记本上无法识别,但在其他电脑上正常工作时,问题通常出在笔记本自身或其与扩展坞的兼容性上。以下是系统化的定位思路和排查步骤,帮助你快速找到故障原因: 背景: 一个M-pard(铭豹)扩展坞的网卡突然无法识别了,扩展出来的三个USB接口正常。…

未来机器人的大脑:如何用神经网络模拟器实现更智能的决策?

编辑&#xff1a;陈萍萍的公主一点人工一点智能 未来机器人的大脑&#xff1a;如何用神经网络模拟器实现更智能的决策&#xff1f;RWM通过双自回归机制有效解决了复合误差、部分可观测性和随机动力学等关键挑战&#xff0c;在不依赖领域特定归纳偏见的条件下实现了卓越的预测准…

Linux应用开发之网络套接字编程(实例篇)

服务端与客户端单连接 服务端代码 #include <sys/socket.h> #include <sys/types.h> #include <netinet/in.h> #include <stdio.h> #include <stdlib.h> #include <string.h> #include <arpa/inet.h> #include <pthread.h> …

华为云AI开发平台ModelArts

华为云ModelArts&#xff1a;重塑AI开发流程的“智能引擎”与“创新加速器”&#xff01; 在人工智能浪潮席卷全球的2025年&#xff0c;企业拥抱AI的意愿空前高涨&#xff0c;但技术门槛高、流程复杂、资源投入巨大的现实&#xff0c;却让许多创新构想止步于实验室。数据科学家…

深度学习在微纳光子学中的应用

深度学习在微纳光子学中的主要应用方向 深度学习与微纳光子学的结合主要集中在以下几个方向&#xff1a; 逆向设计 通过神经网络快速预测微纳结构的光学响应&#xff0c;替代传统耗时的数值模拟方法。例如设计超表面、光子晶体等结构。 特征提取与优化 从复杂的光学数据中自…