本文目录导读:

- 浏览器原生Web Speech API(最简实现)
- Python调用系统TTS(跨平台)
- Python使用第三方库(支持多语言)
- 在线API方案(网络版)
- Node.js方案(服务器端)
- React Native移动端
- 常见问题处理
- 推荐方案
浏览器原生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();
常见问题处理
- 中文语音不自然:建议设置lang='zh-CN',部分浏览器需要下载中文语音包
- 语音队列问题:如需打断当前播报,先调用window.speechSynthesis.cancel()
- 后台播放:部分浏览器限制必须用户交互后才能播报(点击事件触发)
推荐方案
- 临时测试:直接使用浏览器控制台运行Web Speech API
- 桌面应用:Python + pyttsx3
- 在线服务:接入百度/阿里/腾讯的语音合成API(音质更好)
- 跨平台:使用React Native或Flutter的TTS插件
根据你的具体场景(网页/桌面/移动端/服务器),选择最适合的方案即可,如有更详细的场景需求,欢迎补充说明!