React 中的语音和摄像头输入:语音识别、媒体设备及权限

发布日期:2026-05-07 10:34:35   浏览量 :1
发布日期:2026-05-07 10:34:35  
1

2026西湖龙井茶官网DTC发售:茶农直供,政府溯源防伪到农户家 

React 中的语音与摄像头输入:语音识别、媒体设备及权限管理

语音和摄像头是让静态网页应用变得栩栩如生的两种感官体验。你可以与之对话的搜索栏、能实时转录你话语的笔记应用、允许你选择使用哪个网络摄像头的会议工具,以及按住按键即可通话的对讲机功能。这些功能如今已不再新奇——浏览器拥有相关应用程序接口(API)已有多年——但每一项功能的背后,都隐藏着层层权限提示、厂商前缀以及生命周期方面的怪异行为,使得将它们集成到 React 组件中变得痛苦不堪。

本文将详细介绍四种用于语音和摄像头输入的浏览器能力:带有中间结果的实时语音识别、枚举用户的摄像头和麦克风、以能够应对权限撤销的方式查询权限状态,以及使用 Shift 键作为按住说话(Push-to-Talk)的修饰键。和往常一样,我们将先从手动实现开始,以便你理解其底层机制,然后将其替换为来自 ReactUse 的专用钩子函数。最后,我们将把这四种功能组合成一个完整的语音搜索组件,包含设备选择器、权限门禁以及按住录音的交互功能。

1. 实时语音识别

手动实现方式

Web Speech API 是较早出现的浏览器 API 之一,但从未真正标准化——Chrome 浏览器以 webkitSpeechRecognition 的形式提供该功能,而在大多数引擎中,无前缀的 SpeechRecognition 仍然缺失。最小可行的 React 封装如下:

function ManualSpeechRecognition() {
  const [transcript, setTranscript] = useState("");
  const [listening, setListening] = useState(false);
  const recognitionRef = useRef<any>(null);

  useEffect(() => {
    const SR =
      (window as any).SpeechRecognition ||
      (window as any).webkitSpeechRecognition;
    if (!SR) return;
    const recognition = new SR();
    recognition.

免责声明:本文内容来自互联网,该文观点不代表本站观点。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,请到页面底部单击反馈,一经查实,本站将立刻删除。

关于我们
热门推荐
合作伙伴
免责声明:本站部分资讯来源于网络,如有侵权请及时联系客服,我们将尽快处理
支持 反馈 订阅 数据
回到顶部