/simpletts

Primary LanguageJavaScriptISC LicenseISC

simpletts

A basic tss manager, based on Microsoft Speech API or espeak for others OS

Build status Coverage status Dependency status Dev dependency status Issues Pull requests

Installation

$ npm install simpletts

Espeak (if not SAPI)

  • On Linux
$ apt-get install espeak
  • Or, download installer

http://espeak.sourceforge.net/download.html

Features

  • simply read & play text

Doc

Attributes

  • defaultVoice: Voice (default = null)
  • forceEspeak: boolean (default = false)

Methods

  • getTTSSystem(void): "sapi" | "espeak"
  • getVoices(void): Promise<resolve<Array<Voice>>|reject<Error>>
  • isReading(void): boolean
  • read(Options|string): Promise<resolve<Options>|reject<Error>>
  • stopReading(void): Promise<resolve<void>|reject<Error>>

Interfaces

interface Voice {
	name: string,
	gender: "female" | "male"
}

interface Options {
	text: string,
	< voice: Voice|string, >
	< integer volume, > // percentage, 0 -> 100, default 100
	< integer speed > // percentage, 0 -> 100, default 50
}

ElectronJS

When using with electronjs in Windows, you can move "vbs" scripts to external folder and pass folder path in constructor.

/**
 * move "listvoices.vbs" and "playtext.vbs" in
 * "./node_modules/simpletts/batchs" to external folder.
 * ex: ./plugins/vbs/*
 */
const { resolve } = require("path");
const SimpleTTS = require("simpletts");
const vbsFolders = resolve("plugins", "vbs");
const simpleTTS = new SimpleTTS(vbsFolders);

Examples

Bash

$ npx run-script simpletts "This is a test"

Typescript

import SimpleTTS = require("simpletts");

interface Voice {
	name: string;
	gender: "female" | "male";
}

interface Options {
	text: string;
	volume?: number;
	speed?: number;
	voice?: Voice | string;
}

const tts = new SimpleTTS();

tts.getVoices().then((voices: Array<Voice>) => {

	return tts.read({
		"text": "test",
		"voice": voices[0]
	});

}).then((options: Options) => {
	console.log(options);
}).catch((err: Error) => {
	console.log(err);
});

Native

const SimpleTTS = require("simpletts");
const tts = new SimpleTTS();

tts.getVoices().then((voices) => {

	console.log(voices[0].name);
	console.log(voices[0].gender);

}).catch((err) => {
	console.log(err);
});

tts.read({ "text": "this is a test", "volume": 75, "speed": 60 }).then(() => {
	console.log("Ok");
}).catch((err) => {
	console.log(err);
});

tts.read("this is a test").then(() => { // is equal to { "text": "this is a test", "voice": voices[0], "volume": 100, "speed": 50 }
	console.log("Ok");
}).catch((err) => {
	console.log(err);
});

Tests

$ npm run-script tests

License

ISC