本文同步发表于我的微信公众号,微信搜索 程语新视界 即可关注,每个工作日都有文章更新

鸿蒙系统的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();
  }
}

六、备注

  1. 权限申请
   // 在config.json中添加
   "reqPermissions": [
     {
       "name": "ohos.permission.USE_TTS"
     }
   ]
  1. 资源释放

    • 页面销毁时调用release()方法
    • 移除所有事件监听器
  2. 性能优化

    • 长文本分段朗读
    • 预加载常用语音内容
Logo

中国智能体开发者社区,聚焦智能体与大模型开发,提供前沿资讯、实用工具链、开源项目及行业案例。通过技术沙龙、开发者大赛等活动,促进经验交流与协作,助力开发者快速构建创新智能应用。

更多推荐