我正在使用来自https://github.com/domaemon/org.apache.cordova.plugin.tts的TTS插件但该插件似乎不起作用。它甚至没有初始化。
安装如下插件(PHONEGAP 3.3)
phonegap plugin add https://github.com/domaemon/org.apache.cordova.plugin.tts.git
phonegap build android
在phonegap config.xml中添加了以下内容
<gap:plugin name="org.apache.cordova.plugins.tts" value="org.apache.cordova.plugins.tts"/>
在我的javascript中添加了以下代码
window.plugins.tts.startup(startupWin, fail);
function startupWin(result) {
console.log("Startup win");
// When result is equal to STARTED we are ready to play
if (result == TTS.STARTED) {
window.plugins.tts.getLanguage(win, fail);
window.plugins.tts.speak("The text to speech service is ready");
window.plugins.tts.isLanguageAvailable("en_US", function() {
addLang("en_US", "English (American)");
}, fail);
window.plugins.tts.isLanguageAvailable("en_GB", function() {
addLang("en_GB", "English (UK)");
}, fail);
window.plugins.tts.isLanguageAvailable("fr", function() {
addLang("fr", "French");
}, fail);
window.plugins.tts.isLanguageAvailable("de", function() {
addLang("de", "German");
}, fail);
window.plugins.tts.isLanguageAvailable("it", function() {
addLang("it", "Italian");
}, fail);
window.plugins.tts.isLanguageAvailable("es", function() {
addLang("es", "Spanish");
}, fail);
}
}
function addLang(loc, lang) {
var langs = document.getElementById('langs');
var langOption = document.createElement("OPTION")
langOption.innerText = lang;
langOption.value = loc;
langs.options.add(langOption);
}
function changeLang() {
var yourSelect = document.getElementById('langs');
window.plugins.tts.setLanguage(yourSelect.options[yourSelect.selectedIndex].value, win, fail);
}
function win(result) {
console.log(result);
}
function fail(result) {
console.log("Error = " + result);
}
function speak() {
console.log("Speaking");
window.plugins.tts.speak("How are you");
}
但是没有显示任何控制台日志消息。我在genymotion模拟器上测试它。
答案 0 :(得分:10)
安装如下插件。
phonegap plugin add https://github.com/domaemon/org.apache.cordova.plugin.tts.git
phonegap build android
安装和构建后。将此插件添加到phonegap config.xml文件中。 (如果使用sencha touch构建应用程序,则config.xml将位于根文件夹中。)
<gap:plugin name="org.apache.cordova.plugins.tts" value="org.apache.cordova.plugins.tts"/>
这会将插件添加到最终版本中。现在,要启动TTS服务并说一些文本,请使用以下代码段。
navigator.tts.startup(startupWin, fail);
function startupWin(result) {
console.log("Startup win");
// When result is equal to STARTED we are ready to play
console.log("Result "+result);
//TTS.STARTED==2 use this once so is answered
if (result == 2) {
navigator.tts.getLanguage(win, fail);
navigator.tts.speak("The text to speech service is ready");
}
}
function win(result) {
console.log(result);
}
function fail(result) {
console.log("Error = " + result);
}
我遇到的问题是在插件中未定义startupWin中的TTS.STARTED。我只使用了常量值,插件工作正常。
答案 1 :(得分:0)
result == 2或STARTED只能运行一次。如果你再次调用该函数,它可能不会返回2或STARTED(发生在我身上)。所以最好不要在启动成功时使用这个条件。
/*********tts.js*************/
var tts = {
say: function() {
alert("tts");
},
startup: function(successCallback, errorCallback) {
console.log("TTS-Startup");
cordova.exec(successCallback, errorCallback, "TTS", "startup", []);
},
speed: function(speed, successCallback, errorCallback) {
cordova.exec(successCallback, errorCallback, "TTS", "speed", [speed]);
},
speak: function(text, successCallback, errorCallback) {
cordova.exec(successCallback, errorCallback, "TTS", "speak", [text]);
}
};
if(!window.plugins) {
window.plugins = {};
}
if (!window.plugins.tts) {
window.plugins.tts = tts;
}
/**********calling from your js after device ready***************/
function visitToString(){
window.plugins.tts.startup(function(result){
window.plugins.tts.speed(50,function(){
console.log('speed success');
},function(err){
console.log('speed err'+JSON.stringify(err));
});
window.plugins.tts.speak(finalstr,function(){
console.log('speech success');
},function(err){
console.log('speech err'+JSON.stringify(err));
});
}, fail);
}
<button id="speakvisit" onclick="visitToString();">Audio Details
</button>