You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何实现Android SpeechRecognizer识别结果的自动格式化与标点功能?

Android SpeechRecognizer 识别结果自动添加标点的实现方案

官方的RecognizerIntent.EXTRA_ENABLE_FORMATTING参数确实受限于底层识别器的实现,大部分系统默认或第三方识别器并未支持该功能,因此需要通过以下替代方案实现文本格式化:

1. 使用云端语音识别服务

主流云端语音转文字服务均内置了智能标点添加功能,识别准确率远高于本地方案。实现思路:

  • 将录音数据上传至对应云端API
  • 直接获取带标点的结构化识别结果
  • 无需额外处理即可得到格式化文本

2. 本地文本后处理

如果依赖本地识别,可通过规则或轻量AI模型实现标点补全:

规则式处理(适合简单场景)

基于语义关键词、句子长度等规则手动添加标点,示例代码:

private String formatRecognizedText(String rawResult) {
    // 替换识别出的文字标点为符号标点
    String processed = rawResult.replaceAll("。", ".").replaceAll(",", ",")
                                .replaceAll("!", "!").replaceAll("?", "?");
    
    // 按语义停顿和句子长度分割添加标点
    StringBuilder sb = new StringBuilder(processed);
    int charCount = 0;
    for (int i = 0; i < sb.length(); i++) {
        char c = sb.charAt(i);
        if (!Character.isWhitespace(c)) {
            charCount++;
            // 每12-18字左右添加句号(可根据场景调整)
            if (charCount >= 15 && i + 1 < sb.length() && !",.!?".contains(String.valueOf(sb.charAt(i+1)))) {
                sb.insert(i + 1, "。");
                charCount = 0;
                i++; // 跳过插入的标点
            }
        }
    }
    // 为结尾补全标点
    if (sb.length() > 0) {
        char lastChar = sb.charAt(sb.length() - 1);
        if (!",.!?".contains(String.valueOf(lastChar))) {
            sb.append("。");
        }
    }
    return sb.toString();
}

AI模型本地推理(适合复杂场景)

使用TensorFlow Lite等轻量框架,部署开源的标点预测模型,通过本地推理为识别文本添加标点,这种方式准确率高于规则式,且无需联网。

3. 集成第三方语音识别SDK

如讯飞语音、百度语音等第三方SDK,均自带语音识别+自动标点功能,只需按照SDK文档集成即可直接获取带标点的结果,无需额外开发。

内容的提问来源于stack exchange,提问作者MOS

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.09 23:37:26