本文概述
- 要求
- 文字转语音
- 为什么没有停止方法?
在本文中, 你将学习如何在cordova项目中轻松地将文本转换为语音。
要求 为了使用设备的本机语音合成API, 我们将为其使用插件。 Cordova插件TTS是由@vilic编写的插件, 可让你通过Javascript使用设备的本机语音合成API。该插件为以下平台提供支持:
- iOS 7以上
- Windows Phone 8
- Android 4.0.3+(API级别15+)
cordova plugin add cordova-plugin-tts
安装后, 你将可以在窗口中使用TTS对象。有关更多信息, 请在此处访问官方的Github存储库。此插件使用iOS中的AVSpeechSynthesizer类, Android中的TextToSpeech类和Windows Phone中的Windows Phone语音合成类。
文字转语音 要使用Javascript将文本转换为语音, 请使用TTS对象的语音方法。此方法期望具有最多3个属性的对象作为第一个参数:
物业名称 | 类型 | 描述 |
文本 | String | 指定将要说的文字。 |
地区 | String | 4个字符的代码, 指定用于合成文本的语言。 |
率 | float | SpeechSynthesizer对象的语音速率, 从0.1到1 |
TTS.speak({text: 'Good morning, how are you?', locale: 'en-US', rate: 1}, function () {console.log('Text succesfully spoken');
}, function (reason) {console.log(reason);
});
值得一提的是, 如果你想在应用启动时合成文本, 则需要将代码包装在deviceready事件中:
document.addEventListener('deviceready', function () {TTS.speak('Welcome to my awesome app', function () {console.log('Ready !');
}, function (reason) {console.log(reason);
});
});
为什么没有停止方法? 用本机API用技术术语来说, 你可以停止任何语音对象。但是, 使用此插件, 如果已经在运行并且原因很简单(不, 该插件并不坏或不完整), 则无法停止语音合成(至少不是以传统方式)。
当我们使用Cordova时, 我们只能发送和接收一些数据, 我们可以通过回调与本机代码和Javascript进行交互, 但是由于每个Javascript方法的执行都会创建一个新的插件, 因此我们无法与插件类的单个本机实例进行动态交互插件的本机类的实例。
文章图片
每当你在这种情况下执行一些操作(从头开始)时, Cordova都会实例化Java中的TTS类, 该类会一次扩展CordovaPlugin并将TTS对象存储在该类的局部变量中。你可以从存储的TTS对象执行stop方法, 并且语音合成应按计划停止。但是, 如果你在这种情况下从Javascript执行另一个方法stop, 则将创建Java中扩展CordovaPlugin的TTS类的新实例(这意味着我们不再可以从start方法访问相同的TTS对象) 。 iOS和Windows也会发生相同的情况。
尽管插件中没有停止方法, 但是你可以使用一些技巧来实现它。讲出一个空字符串, 语音合成将停止!你可以扩展插件并创建自己的stop方法:
// Extend the TTS object with the new stop method.TTS["stop"] = function(){TTS.speak({text: ''});
};
// Speak some textTTS.speak({text: 'Hola buenos días. Hoy para el desayuno hay pan con mantequilla.', locale: 'es-ES', rate: 0.75}, function () {console.log('success');
}, function (reason) {console.log(reason);
});
// Stop after 3 secondssetTimeout(function() {TTS.stop();
console.log("Speech synthesis stopped");
}, 3000);
【如何在Cordova中将文本转换为语音(语音合成)】编码愉快!
推荐阅读
- 如何检查应用程序是否已安装在Android设备上并使用Cordova打开它
- 如何在Cordova中使用javascript将图像从设备转换为base64
- 如何使用Cordova从设备上的base64字符串创建图像文件
- 如何在Android中使用Cordova创建SFTP客户端
- GPX文件无法在Android模拟器中加载
- 如何模拟Android模拟器上的硬件媒体控制按钮
- 从Android模拟器ping主机
- 如何在android中制作这样的动画()
- SQLite数据库从Android模拟器中消失了