鸿蒙 文本转语音组件TextToSpeech
·
本文同步发表于我的微信公众号,微信搜索 程语新视界 即可关注,每个工作日都有文章更新
鸿蒙系统的TextToSpeech(简称TTS)组件提供了将文本转换为语音输出的能力,支持多种语言和语音参数设置。
一、核心功能
| 功能 | 说明 |
|---|---|
| 文本朗读 | 将文本内容转换为语音输出 |
| 多语言支持 | 支持中英文等多种语言 |
| 语音参数调节 | 可调整语速、音调、音量 |
| 播放控制 | 开始、暂停、恢复、停止 |
| 状态监听 | 监听语音合成状态变化 |
二、基本使用步骤
1. 导入模块
import tts from '@ohos.speech.tts';
2. 创建TTS实例
// 获取TTS引擎实例
let ttsEngine = tts.createTtsEngine({
mode: tts.TtsMode.SHARE // 使用共享模式
});
3. 初始化参数设置
// 设置基本参数
ttsEngine.init({
volume: 0.8, // 音量(0.0-1.0)
speed: 1.0, // 语速(0.5-2.0)
pitch: 1.0 // 音调(0.5-2.0)
}, (err) => {
if (err) {
console.error('初始化失败: ' + JSON.stringify(err));
return;
}
console.log('TTS初始化成功');
});
三、核心API
1. 语音合成控制
开始朗读
ttsEngine.speak({
text: '欢迎使用鸿蒙系统',
queueMode: tts.TtsQueueMode.ADD // 添加到播放队列
}, (err) => {
if (err) {
console.error('朗读失败: ' + JSON.stringify(err));
return;
}
console.log('开始朗读');
});
暂停/恢复/停止
// 暂停
ttsEngine.pause();
// 恢复
ttsEngine.resume();
// 停止
ttsEngine.stop();
2. 语音参数调节
实时调整参数
ttsEngine.setParameter(
tts.TtsParam.VOLUME, // 参数类型
0.9, // 参数值
(err) => {
// 回调处理
}
);
支持调整的参数
| 参数 | 类型 | 取值范围 | 说明 |
|---|---|---|---|
| VOLUME | number | 0.0-1.0 | 音量大小 |
| SPEED | number | 0.5-2.0 | 语速快慢 |
| PITCH | number | 0.5-2.0 | 音调高低 |
3. 状态监听
添加状态监听器
ttsEngine.on('ttsStateChange', (state) => {
switch (state) {
case tts.TtsState.PLAY:
console.log('开始播放');
break;
case tts.TtsState.PAUSE:
console.log('暂停播放');
break;
case tts.TtsState.STOP:
console.log('停止播放');
break;
case tts.TtsState.FINISH:
console.log('播放完成');
break;
}
});
四、高级功能
1. 多语言支持
// 获取支持的语言列表
ttsEngine.getSupportedLanguages((err, languages) => {
if (!err) {
console.log('支持的语言: ' + JSON.stringify(languages));
}
});
// 设置语言(需在init之后调用)
ttsEngine.setParameter(
tts.TtsParam.LANGUAGE,
'zh-CN', // 中文普通话
(err) => {}
);
2. 语音合成到文件
ttsEngine.synthesizeToFile({
text: '这段语音将保存为文件',
fileName: 'output.wav' // 保存路径
}, (err) => {
if (!err) {
console.log('语音文件生成成功');
}
});
3. 自定义语音引擎
// 创建时指定第三方引擎
let customEngine = tts.createTtsEngine({
mode: tts.TtsMode.EXCLUSIVE,
engine: 'com.example.customtts' // 第三方引擎包名
});
五、示例代码
@Entry
@Component
struct TtsExample {
private ttsEngine: tts.TtsEngine = tts.createTtsEngine({
mode: tts.TtsMode.SHARE
});
aboutToAppear() {
// 初始化TTS
this.ttsEngine.init({
volume: 0.8,
speed: 1.0,
pitch: 1.0
}, (err) => {
if (err) return;
// 设置中文
this.ttsEngine.setParameter(tts.TtsParam.LANGUAGE, 'zh-CN', () => {});
// 添加状态监听
this.ttsEngine.on('ttsStateChange', (state) => {
// 处理状态变化
});
});
}
build() {
Column() {
Button('播放语音')
.onClick(() => {
this.ttsEngine.speak({
text: '鸿蒙系统文本转语音演示',
queueMode: tts.TtsQueueMode.ADD
}, (err) => {});
})
Button('暂停').onClick(() => this.ttsEngine.pause())
Button('继续').onClick(() => this.ttsEngine.resume())
Button('停止').onClick(() => this.ttsEngine.stop())
}
}
onDestroy() {
// 释放资源
this.ttsEngine.off('ttsStateChange');
this.ttsEngine.release();
}
}
六、备注
- 权限申请:
// 在config.json中添加
"reqPermissions": [
{
"name": "ohos.permission.USE_TTS"
}
]
-
资源释放:
- 页面销毁时调用
release()方法 - 移除所有事件监听器
- 页面销毁时调用
-
性能优化:
- 长文本分段朗读
- 预加载常用语音内容
更多推荐


所有评论(0)