目录

文本转音频

接口声明

在manifest.json文件的 features属性中增加如下配置。

{"name": "service.texttoaudio"}

导入模块

在调用接口页面的<script>部分增加如下配置。

import texttoaudio from '@service.texttoaudio'

或

var texttoaudio = require("@service.texttoaudio")

使用限制

限制条件

说明

适用终端

手机、平板

适用区域

全球

接口定义

接口

描述

texttoaudio.speak(OBJECT)

将文本内容加入到TTS引擎队列用于语音播报。

texttoaudio.textToAudioFile(OBJECT)

将文本内容添加到TTS引擎队列,合成为语音文件。

texttoaudio.isLanguageAvailable(OBJECT)

检查设备的TTS引擎是否支持输入语言。

texttoaudio.onttsstatechange = function(data)

监听指定ID的操作状态变化。状态包括四种:

  • onStart
  • onStop
  • onError
  • onDone

texttoaudio.stop()

停止语音播放或保存到文件,丢弃队列中的语音。

texttoaudio.isSpeaking()

检查设备TTS引擎是否正在播放语音。

[h2]texttoaudio.speak(OBJECT)

描述

将文本内容加入到TTS引擎队列用于语音播报。

OBJECT参数

参数

类型

是否必填

说明

lang

string

是

文本语言,例如,zh_CN(简体中文)和 en_US(英语)。

content

string

是

播报的文本内容,最大包含4000字符。

rate

number

否

语速。取值大于0,0.5 为半速、2 为二倍速。如果该参数未设置,默认值为1。不同的语音引擎取值区间不同,若超出边界值,则取边界值。

pitch

number

否

音调。取值大于0,值越大音调越高。如果该参数未设置,默认值为1。不同的语音引擎取值区间不同,若超出边界值,则取边界值。

success

function

否

成功回调。

fail

function

否

失败回调。

success返回值:

参数

类型

说明

utteranceId

string

操作的唯一标识。

fail返回错误码:

错误码

说明

1000

播报失败。

1001

系统SDK版本不支持。

1002

初始化失败。

1003

输入文本的长度超过限值。

1004

语言不支持。

示例代码

texttoaudio.speak({
  lang:'en_US',
  content:'I like chocolate.',
  pitch:1.0,
  rate:1.0,
  success:function(data) {
    console.log('speak.success --> utteranceId: ' + data.utteranceId);
  },
  fail:function(errorMessage, errorCode) {
    console.log('speak.fail --> errorMessage: ' + errorMessage + ", errorCode: " + errorCode);
  }
});

[h2]texttoaudio.textToAudioFile(OBJECT)

描述

将文本内容添加到TTS引擎队列,合成为语音文件。为了准确检测到错误和跟踪语音合成,建议您设置onTtsStateChange。

OBJECT参数

参数

类型

是否必填

说明

lang

string

是

文本语言,例如,zh_CN(简体中文)和 en_US(英语)。

content

string

是

合成的文本内容,最大包含4000字符。

rate

number

否

语速。取值大于0,0.5 为半速、2 为二倍速。如果该参数未设置,默认值为1。不同的语音引擎取值区间不同,若超出边界值,则取边界值。

pitch

number

否

音调。取值大于0,值越大音调越高。如果该参数未设置,默认值为1。不同的语音引擎取值区间不同,若超出边界值,则取边界值。

success

function

否

成功回调。

fail

function

否

失败回调。

success返回值:

参数

类型

说明

filePath

string

生成的文件保存路径。

utteranceId

string

操作的唯一标识。

fail返回错误码:

错误码

说明

1000

合成失败。

1001

系统SDK版本不支持。

1002

初始化失败。

1003

输入文本的长度超过限值。

1004

语言不支持。

1005

IO异常。

示例代码

texttoaudio.onttsstatechange = function(data) {
  switch (data.state) {
    case'onStart':
      console.log('onttsstatechange --> Synthesis(' + data.utteranceId + ') started.');
      break;
    case'onError':
      console.log('onttsstatechange --> Synthesis(' + data.utteranceId + ') failed.');
      break;
    case'onStop':
      console.log('onttsstatechange --> Synthesis(' + data.utteranceId + ') stopped.');
      break;
    case'onDone':
      console.log('onttsstatechange --> Synthesis(' + data.utteranceId + ') done.');
      break;
    default:
      break;
  }
}
texttoaudio.textToAudioFile({
  lang:'en_US',
  content:'I am running by the lake.',
  pitch:1.0,
  rate:1.0,
  success:function(data) {
    // Utterance is successfully added to TTS engine's queue. Make sure that onttsstatechange is 
    // triggered with 'onDone' to start using the generated audio file.
    console.log('success --> utteranceId: ' + data.utteranceId + ", filePath: " + data.filePath);
  },
  fail:function(errorMessage, errorCode) {
    console.log('fail --> errorMessage: ' + errorMessage + ", errorCode: " + errorCode);
  }
});

[h2]texttoaudio.isLanguageAvailable(OBJECT)

描述

检查设备的TTS引擎是否支持输入语言。

OBJECT参数

参数

类型

是否必填

说明

lang

string

是

文本语言,例如,zh_CN(简体中文)和 en_US(英语)。

success

function

否

成功回调。

fail

function

否

失败回调。

success返回值:

参数

类型

说明

isAvailable

string

支持时,取值为true。否则,取值为false。

fail返回错误码:

错误码

说明

200

一般错误。

202

参数无效。

示例代码

texttoaudio.isLanguageAvailable({
  lang:'tr', 
  success:function(data) {
    console.log('success --> isAvailable: ' + data.isAvailable);
  },
  fail:function(errorMessage, errorCode) {
    console.log('fail --> errorMessage: ' + errorMessage + ', errorCode: ' + errorCode);
  }});

[h2]texttoaudio.onttsstatechange = function(data)

描述

监听每个操作的状态变化。状态包括四种: onStart、onStop、onError、onDone。

返回值:

参数

类型

说明

utteranceId

string

操作的唯一标识。

state

string

操作状态,取值为onStart、onStop、onError或onDone。

示例代码

texttoaudio.onttsstatechange = function(data) {
  switch (data.state) {
    case'onStart':
      console.log('onttsstatechange --> Synthesis(' + data.utteranceId + ') started.');
      break;
    case'onError':
      console.log('onttsstatechange --> Synthesis(' + data.utteranceId + ') failed.');
      break;
    case'onStop':
      console.log('onttsstatechange --> Synthesis(' + data.utteranceId + ') stopped.');
      break;
    case'onDone':
      console.log('onttsstatechange --> Synthesis(' + data.utteranceId + ') done.');
      break;
    default:
      break;
  }}

[h2]texttoaudio.stop()

描述

停止语音播放或保存到文件,丢弃队列中的语音。

返回值:

返回值

说明

0

请求成功。

-1

请求失败。

示例代码

var value = texttoaudio.stop();
if(value === 0) {
  console.log('stop --> success');
} else {
  console.log('stop --> fail');
}

[h2]texttoaudio.isSpeaking()

描述

检查设备TTS引擎是否正在播放或者合成语音。

返回值:

返回值

说明

true

正在播放或者合成。

false

当前未播放或者未合成。

示例代码

var result = texttoaudio.isSpeaking();
console.log('isSpeaking --> ' + result);

Demo

<template>
  <div class="container">
    <div class="item-container">
      <input class="btn" type="button" value="Speak" onclick="Speak" />
    </div>
    <div class="item-container">
      <input class="btn" type="button" value="textToAudioFile" onclick="textToAudioFile" />
    </div>
    <div class="item-container">
      <input class="btn" type="button" value="isLanguageAvailable" onclick="isLanguageAvailable" />
    </div>
    <div class="item-container">
      <input class="btn" type="button" value="stop " onclick="stop " />
    </div>

    <div class="item-container">
      <input class="btn" type="button" value="isSpeaking " onclick="isSpeaking " />
    </div> 

  </div>
</template> 
<style>
.container{
  flex: 1;
  flex-direction: column;
}
.item-container {
  margin-left: 32px;
  margin-right:32px;
  padding-top: 20px;
  padding-right: 20px;
  padding-bottom: 20px;
  padding-left: 20px;
  background-color: #fff;
  border-radius: 32px;
  flex-direction: column;
}
  .btn {
    background-color: #0faeff;
    color: #ffffff; 
    width:600px;
    height: 100px;
    font-size: 50px;
    border-radius:15px;
  }
</style> 
<script> 
    import texttoaudio from '@service.texttoaudio'
    import prompt from '@system.prompt';
    export default {
        data: {
            componentName: 'texttoaudio',
            isRefreshing: false,
            enableRefresh: true
        },
        onInit() {
            this.$page.setTitleBar({ text: 'texttoaudio' })
            texttoaudio.onttsstatechange = function (data) {
                switch (data.state) {
                    case 'onStart':
                        console.log('onttsstatechange --> Synthesis(' + data.utteranceId + ') started.');
                        break;
                    case 'onError':
                        console.log('onttsstatechange --> Synthesis(' + data.utteranceId + ') failed.');
                        break;
                    case 'onStop':
                        console.log('onttsstatechange --> Synthesis(' + data.utteranceId + ') stopped.');
                        break;
                    case 'onDone':
                        console.log('onttsstatechange --> Synthesis(' + data.utteranceId + ') done.');
                        break;
                    default:
                        break;
                }
            }
        },
        Speak() {
            texttoaudio.speak({
                lang: 'en_US',
                //content: 'I like chocolate.',
                content: "internal://files/Music/TTS/tts_20211220100300690.wav",
                pitch: 1.0,
                rate: 1.0,
                success: function (data) {
                    console.log('speak.success --> utteranceId: ' + data.utteranceId);
                },
                fail: function (errorMessage, errorCode) {
                    console.log('speak.fail --> errorMessage: ' + errorMessage + ", errorCode: " + errorCode);
                }
            });
        },

        textToAudioFile() {
            texttoaudio.textToAudioFile({
                lang: 'en_US',
                content: 'I am running by the lake.',
                pitch: 1.0,
                rate: 1.0,
                success: function (data) {
                    // Utterance is successfully added to TTS engine's queue. Make sure that onttsstatechange is  
                    // triggered with 'onDone' to start using the generated audio file. 
                    console.log('success --> utteranceId: ' + data.utteranceId + ", filePath: " + data.filePath);
                    prompt.showToast({
                        message:  'utteranceId:'+ data.utteranceId+'  ,filePath: '+data.filePath,
                        duration: 2000,
                        gravity: 'bottom'
                    });
                },
                fail: function (errorMessage, errorCode) {
                    console.log('fail --> errorMessage: ' + errorMessage + ", errorCode: " + errorCode);
                }
            });
        },
        isLanguageAvailable() {
            texttoaudio.isLanguageAvailable({
                lang: 'tr',
                success: function (data) {
                    console.log('success --> isAvailable: ' + data.isAvailable);
                    prompt.showToast({
                        message: data.isAvailable,
                        duration: 2000,
                        gravity: 'bottom'
                    });
                },
                fail: function (errorMessage, errorCode) {
                    console.log('fail --> errorMessage: ' + errorMessage + ', errorCode: ' + errorCode);
                }
            });

        },
        onttsstatechange() {
            texttoaudio.onttsstatechange = function (data) {
                switch (data.state) {
                    case 'onStart':
                        console.log('onttsstatechange --> Synthesis(' + data.utteranceId + ') started.');
                        break;
                    case 'onError':
                        console.log('onttsstatechange --> Synthesis(' + data.utteranceId + ') failed.');
                        break;
                    case 'onStop':
                        console.log('onttsstatechange --> Synthesis(' + data.utteranceId + ') stopped.');
                        break;
                    case 'onDone':
                        console.log('onttsstatechange --> Synthesis(' + data.utteranceId + ') done.');
                        break;
                    default:
                        break;
                }
            }
        },  
        stop() {
            var value = texttoaudio.stop();
            if (value === 0) {
                console.log('stop --> success');
            } else {
                console.log('stop --> fail');
            }
        },
        isSpeaking() {
            var result = texttoaudio.isSpeaking();
            console.log('isSpeaking --> ' + result);
        }
    }
</script>

效果图如下:

版本更新说明

版本

发布日期

描述

1080

2021-12-28

第一次正式发布。