当前位置:首页 > React

react实现语音播报

2026-01-27 03:41:58React

使用 Web Speech API 实现语音播报

React 中可以通过浏览器原生支持的 Web Speech API 实现语音播报功能。该 API 提供了 SpeechSynthesis 接口,允许将文本转换为语音。

安装依赖(可选):

npm install react-speech-kit

基本实现代码:

import React, { useState } from 'react';

const SpeechComponent = () => {
  const [text, setText] = useState('');

  const speak = () => {
    const utterance = new SpeechSynthesisUtterance(text);
    window.speechSynthesis.speak(utterance);
  };

  return (
    <div>
      <input 
        type="text" 
        value={text} 
        onChange={(e) => setText(e.target.value)} 
      />
      <button onClick={speak}>播放语音</button>
    </div>
  );
};

export default SpeechComponent;

自定义语音参数

可以调整语音的音调、速率和音量等参数:

const speakWithOptions = () => {
  const utterance = new SpeechSynthesisUtterance(text);
  utterance.rate = 1.2;  // 语速 (0.1-10)
  utterance.pitch = 1;   // 音高 (0-2)
  utterance.volume = 1;  // 音量 (0-1)

  // 获取可用语音列表并选择特定语音
  const voices = window.speechSynthesis.getVoices();
  utterance.voice = voices.find(voice => voice.name.includes('Microsoft'));

  window.speechSynthesis.speak(utterance);
};

使用第三方库 react-speech-kit

如需更简单的实现,可以使用 react-speech-kit 库:

import { useSpeechSynthesis } from 'react-speech-kit';

const SpeechComponent = () => {
  const [text, setText] = useState('');
  const { speak } = useSpeechSynthesis();

  return (
    <div>
      <input 
        type="text" 
        value={text} 
        onChange={(e) => setText(e.target.value)} 
      />
      <button onClick={() => speak({ text })}>播放语音</button>
    </div>
  );
};

注意事项

Web Speech API 的兼容性需要考虑:

  • 主流现代浏览器均支持(Chrome、Edge、Firefox、Safari)
  • iOS 上需要用户交互才能触发语音
  • 首次使用时可能需要获取用户权限

语音合成功能在组件卸载时应取消:

useEffect(() => {
  return () => {
    window.speechSynthesis.cancel();
  };
}, []);

高级功能实现

实现语音队列和中断功能:

react实现语音播报

const [queue, setQueue] = useState([]);

const addToQueue = (newText) => {
  setQueue(prev => [...prev, newText]);
};

useEffect(() => {
  if (queue.length > 0 && !window.speechSynthesis.speaking) {
    const utterance = new SpeechSynthesisUtterance(queue[0]);
    utterance.onend = () => {
      setQueue(prev => prev.slice(1));
    };
    window.speechSynthesis.speak(utterance);
  }
}, [queue]);

标签: 语音react
分享给朋友:

相关文章

react如何收录

react如何收录

React 收录方法 React 的收录主要涉及搜索引擎优化(SEO)和预渲染技术。由于 React 是单页应用(SPA),默认情况下内容由 JavaScript 动态生成,可能导致搜索引擎爬虫难以收…

react如何调试

react如何调试

调试 React 应用的方法 使用 React Developer Tools React Developer Tools 是 Chrome 和 Firefox 的浏览器扩展,可以检查组件树、状态和…

react架构如何

react架构如何

React 架构核心概念 React 的架构围绕组件化、虚拟 DOM 和单向数据流设计。组件是构建用户界面的独立模块,分为函数组件和类组件。虚拟 DOM 通过高效的 Diff 算法减少直接操作真实 D…

react 如何调试

react 如何调试

调试 React 应用的方法 使用 React Developer Tools 安装 Chrome 或 Firefox 的 React Developer Tools 扩展,可以检查组件树、状态和 p…

react如何同步

react如何同步

React 同步状态管理方法 在 React 中实现同步状态管理,可以通过以下多种方式实现: 使用 useState 和 useEffect 钩子 通过 useState 定义状态,使用 useEf…

vue实现语音播报

vue实现语音播报

使用 Web Speech API 实现语音播报 Vue 中可以通过 Web Speech API 的 SpeechSynthesis 接口实现语音播报功能。该 API 是现代浏览器原生支持的语音合成…