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

如何让WebkitSpeechRecognition自动识别指定两种语言?

问题分析

你代码中recognition.lang = ["en-US","vi-VN"]的写法是无效的——Web Speech API的SpeechRecognition.lang属性仅支持单个字符串语言代码,无法直接设置多语言数组。下面提供两种可行的解决方案:


解决方案1:手动切换语言重试

通过先尝试一种语言识别,若结果置信度低于阈值,则切换到另一种语言重新识别,以此覆盖目标语言范围:

// 兼容不同浏览器的SpeechRecognition构造函数
let recognition = new (window.SpeechRecognition || window.webkitSpeechRecognition)();
recognition.continuous = false;
recognition.interimResults = false;
recognition.maxAlternatives = 1;

// 定义需要支持的目标语言列表
const targetLangs = ["en-US", "vi-VN"];
let currentLangIndex = 0;

// 启动识别的通用函数
function startRecognition() {
  recognition.lang = targetLangs[currentLangIndex];
  recognition.start();
}

// 识别结果处理逻辑
recognition.onresult = function(event) {
  const result = event.results[0][0];
  // 设定置信度阈值,低于则切换语言重试
  if (result.confidence < 0.7) {
    currentLangIndex = (currentLangIndex + 1) % targetLangs.length;
    console.log(`切换语言到${targetLangs[currentLangIndex]}重试`);
    startRecognition();
  } else {
    console.log(`识别结果(${recognition.lang}):${result.transcript},置信度:${result.confidence}`);
    // 在这里处理最终识别结果
  }
};

// 识别出错时切换语言重试
recognition.onerror = function(event) {
  console.error(`识别错误:${event.error}`);
  currentLangIndex = (currentLangIndex + 1) % targetLangs.length;
  startRecognition();
};

// 初始化启动识别
startRecognition();

解决方案2:利用自动语言检测(限部分浏览器支持)

部分浏览器支持将lang设置为"und"(代表未确定语言),让识别引擎自动检测输入语言。但该特性兼容性有限,不同浏览器表现可能不一致:

let recognition = new (window.SpeechRecognition || window.webkitSpeechRecognition)();
recognition.continuous = false;
recognition.interimResults = false;
recognition.maxAlternatives = 1;

// 设置为自动检测语言
recognition.lang = "und";

recognition.onresult = function(event) {
  const result = event.results[0][0];
  console.log(`识别结果:${result.transcript},检测到的语言:${result.lang}`);
  // 校验检测到的语言是否在目标列表内
  if (["en-US", "vi-VN"].includes(result.lang)) {
    // 处理有效识别结果
  } else {
    console.log("检测到的语言不在目标支持范围内");
  }
};

recognition.start();

注意事项
  • 自动语言检测("und")仅在部分浏览器(如部分版本的Chrome)中支持,建议针对目标浏览器做兼容性测试。
  • 手动切换语言的方式兼容性更强,但会增加识别的时间成本,需根据实际场景调整置信度阈值。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.15 09:33:22