在manifest.json文件的 features属性中增加如下配置。
{"name": "service.texttoaudio"}
在调用接口页面的<script>部分增加如下配置。
import texttoaudio from '@service.texttoaudio'
或
var texttoaudio = require("@service.texttoaudio")
接口 |
描述 |
|---|---|
将文本内容加入到TTS引擎队列用于语音播报。 |
|
将文本内容添加到TTS引擎队列,合成为语音文件。 |
|
检查设备的TTS引擎是否支持输入语言。 |
|
监听指定ID的操作状态变化。状态包括四种:
|
|
停止语音播放或保存到文件,丢弃队列中的语音。 |
|
检查设备TTS引擎是否正在播放语音。 |
描述
将文本内容加入到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);
}
});
描述
将文本内容添加到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);
}
});
描述
检查设备的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);
}});
描述
监听每个操作的状态变化。状态包括四种: 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;
}}
描述
停止语音播放或保存到文件,丢弃队列中的语音。
返回值:
返回值 |
说明 |
|---|---|
0 |
请求成功。 |
-1 |
请求失败。 |
示例代码
var value = texttoaudio.stop();
if(value === 0) {
console.log('stop --> success');
} else {
console.log('stop --> fail');
}
描述
检查设备TTS引擎是否正在播放或者合成语音。
返回值:
返回值 |
说明 |
|---|---|
true |
正在播放或者合成。 |
false |
当前未播放或者未合成。 |
示例代码
var result = texttoaudio.isSpeaking();
console.log('isSpeaking --> ' + result);
<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>
效果图如下:
