-
Notifications
You must be signed in to change notification settings - Fork 4
Expand file tree
/
Copy pathindex.js
More file actions
executable file
·87 lines (85 loc) · 2.1 KB
/
Copy pathindex.js
File metadata and controls
executable file
·87 lines (85 loc) · 2.1 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
var ESpeak = require('bindings')('node-espeak');
function genderToNumber(gender) {
gender = gender.toLowerCase();
if(gender === "male" || gender === "m" || gender === 1) {
return 1;
}
else if(gender === "female" || gender === "f" || gender === 2) {
return 2;
}
else if(gender === "none" || gender === "default" || gender === 0) {
return 0;
}
else {
throw TypeError("Allowed genders are: male, female and none.");
}
}
module.exports = {
initialize : function(voice, properties, espeakData) {
ESpeak.initialize(espeakData);
if(voice !== undefined) {
this.setVoice(voice);
}
if(properties !== undefined) {
this.setProperties(properties);
}
},
setVoice : function(voice) {
if(typeof voice === "object") {
voice.language = voice.lang;
if(voice.age !== undefined) {
this.setAge(voice.age);
}
if(voice.gender !== undefined) {
this.setGender(voice.gender);
}
if(voice.language !== undefined) {
this.setLanguage(voice.language);
}
if(voice.variant !== undefined) {
this.setVariant(voice.variant);
}
}
else {
throw new TypeError("Set the voice via a name or an object containing it's properties.");
}
},
setProperties : function(prop) {
if(typeof prop === "object") {
if(prop.rate !== undefined) {
this.setRate(prop.rate);
}
if(prop.volume !== undefined) {
this.setVolume(prop.volume);
}
if(prop.range !== undefined) {
this.setRange(prop.range);
}
if(prop.gap !== undefined) {
this.setGap(prop.gap);
}
if(prop.pitch !== undefined) {
this.setPitch(prop.pitch);
}
}
else {
throw new TypeError("Set the voices properties using an object.");
}
},
setGender : function(gender) {
ESpeak.setGender(genderToNumber(gender));
},
cancel : ESpeak.cancel,
setRate : ESpeak.setRate,
setVolume : ESpeak.setVolume,
setRange : ESpeak.setRange,
setGap : ESpeak.setGap,
setPitch : ESpeak.setPitch,
setAge : ESpeak.setAge,
setLanguage : ESpeak.setLanguage,
setVariant : ESpeak.setVariant,
getProperties : ESpeak.getProperties,
getVoice : ESpeak.getVoice,
onVoice : ESpeak.onVoice,
speak : ESpeak.speak
};