脚本如何文本转语音播报

wen 实用脚本 27

本文目录导读:

脚本如何文本转语音播报

  1. 浏览器原生Web Speech API(最简实现)
  2. Python调用系统TTS(跨平台)
  3. Python使用第三方库(支持多语言)
  4. 在线API方案(网络版)
  5. Node.js方案(服务器端)
  6. React Native移动端
  7. 常见问题处理
  8. 推荐方案

浏览器原生Web Speech API(最简实现)

<!DOCTYPE html>
<html>
<body>
<button onclick="speak()">播放</button>
<script>
function speak() {
  const text = "你好,这是文本转语音测试";
  const utterance = new SpeechSynthesisUtterance(text);
  utterance.lang = 'zh-CN';       // 中文
  utterance.rate = 1.0;           // 语速 0.1-10
  utterance.pitch = 1.0;          // 音高 0-2
  utterance.volume = 1;           // 音量 0-1
  window.speechSynthesis.speak(utterance);
}
</script>
</body>
</html>

Python调用系统TTS(跨平台)

Windows (SAPI5)

import win32com.client
speaker = win32com.client.Dispatch("SAPI.SpVoice")
speaker.Speak("这是Windows语音播报测试")

macOS (NSSpeechSynthesizer)

import subprocess
text = "这是macOS语音播报"
subprocess.run(['say', text])

Linux (espeak)

import os
os.system('espeak "这是Linux语音播报"')

Python使用第三方库(支持多语言)

安装库

pip install pyttsx3

使用示例

import pyttsx3
engine = pyttsx3.init()
engine.setProperty('rate', 150)    # 语速
engine.setProperty('volume', 0.9)  # 音量
# 设置中文语音(需系统支持)
voices = engine.getProperty('voices')
for voice in voices:
    if 'chinese' in voice.name.lower():
        engine.setProperty('voice', voice.id)
        break
engine.say("你好,世界")
engine.runAndWait()

在线API方案(网络版)

使用百度AI语音合成

from aip import AipSpeech
""" 你的 APPID AK SK """
APP_ID = '你的AppID'
API_KEY = '你的ApiKey'
SECRET_KEY = '你的SecretKey'
client = AipSpeech(APP_ID, API_KEY, SECRET_KEY)
result = client.synthesis('你好百度', 'zh', 1, {
    'vol': 5,      # 音量
    'spd': 4,      # 语速
    'pit': 5,      # 音调
    'per': 4,      # 音色(0-度小美,1-度小宇,3-度逍遥,4-度丫丫)
})
# 识别正确返回语音二进制,错误则返回dict
if not isinstance(result, dict):
    with open('audio.mp3', 'wb') as f:
        f.write(result)

Node.js方案(服务器端)

const say = require('say');
// 使用macOS语音
say.speak('Hello World', 'Alex', 0.5, (err) => {
  if (err) {
    return console.error(err);
  }
  console.log('播报完成');
});
// 跨平台方案(需安装festival或espeak)
say.speak('你好', 'zh-CN', 1.0);

React Native移动端

import Tts from 'react-native-tts';
// 初始化
Tts.setDefaultLanguage('zh-CN');
Tts.setDefaultRate(0.5);
// 播报
Tts.speak('你好世界');
// 停止
// Tts.stop();

常见问题处理

  1. 中文语音不自然:建议设置lang='zh-CN',部分浏览器需要下载中文语音包
  2. 语音队列问题:如需打断当前播报,先调用window.speechSynthesis.cancel()
  3. 后台播放:部分浏览器限制必须用户交互后才能播报(点击事件触发)

推荐方案

  • 临时测试:直接使用浏览器控制台运行Web Speech API
  • 桌面应用:Python + pyttsx3
  • 在线服务:接入百度/阿里/腾讯的语音合成API(音质更好)
  • 跨平台:使用React Native或Flutter的TTS插件

根据你的具体场景(网页/桌面/移动端/服务器),选择最适合的方案即可,如有更详细的场景需求,欢迎补充说明!

抱歉,评论功能暂时关闭!