mirror of
https://github.com/rhasspy/espeak-ng.git
synced 2026-10-31 13:38:47 +00:00
Merge remote-tracking branch 'eeejay/set-voice-by-name'
This commit is contained in:
@@ -50,23 +50,31 @@ public:
|
||||
espeak_SetSynthCallback(NULL);
|
||||
}
|
||||
|
||||
void set_voice(
|
||||
long set_voice(
|
||||
const char* aName,
|
||||
const char* aLang,
|
||||
const char* aLang=NULL,
|
||||
unsigned char aGender=0,
|
||||
unsigned char aAge=0,
|
||||
unsigned char aVariant = 0
|
||||
) {
|
||||
espeak_VOICE props = { 0 };
|
||||
props.name = aName;
|
||||
props.languages = aLang;
|
||||
props.gender = aGender;
|
||||
props.age = aAge;
|
||||
props.variant = aVariant;
|
||||
long result = 0;
|
||||
if (aLang || aGender || aAge || aVariant) {
|
||||
espeak_VOICE props = { 0 };
|
||||
props.name = aName;
|
||||
props.languages = aLang;
|
||||
props.gender = aGender;
|
||||
props.age = aAge;
|
||||
props.variant = aVariant;
|
||||
result = espeak_SetVoiceByProperties(&props);
|
||||
} else {
|
||||
result = espeak_SetVoiceByName(aName);
|
||||
}
|
||||
|
||||
// This way we don't need to allocate the name/lang strings to the heap.
|
||||
// Instead, we store the actual global voice.
|
||||
espeak_SetVoiceByProperties(&props);
|
||||
current_voice = espeak_GetCurrentVoice();
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
int getSizeOfEventStruct_() {
|
||||
|
||||
@@ -53,7 +53,7 @@ interface eSpeakNGWorker {
|
||||
void eSpeakNGWorker();
|
||||
void synth_(DOMString aText, VoidPtr aCallback);
|
||||
long getSizeOfEventStruct_();
|
||||
void set_voice(DOMString aName, DOMString aLang, optional octet gender=0, optional octet age=0, optional octet aVariant=0);
|
||||
long set_voice(DOMString aName, DOMString aLang, optional octet gender=0, optional octet age=0, optional octet aVariant=0);
|
||||
[Const] attribute espeak_VOICE[] voices;
|
||||
readonly attribute long samplerate;
|
||||
attribute long rate;
|
||||
|
||||
+12
-11
@@ -159,7 +159,7 @@ function speak() {
|
||||
tts.set_pitch(Number(document.getElementById('pitch').value));
|
||||
console.log(' Setting pitch... done');
|
||||
console.log(' Setting voice...');
|
||||
tts.set_voice.apply(tts, (document.getElementById('voice').value.split(',')));
|
||||
tts.set_voice(document.getElementById('voice').value);
|
||||
console.log(' Setting voice... done');
|
||||
|
||||
var now = Date.now();
|
||||
@@ -232,16 +232,17 @@ function initializeDemo() {
|
||||
var sel = document.getElementById('voice');
|
||||
var index = 0;
|
||||
for (voice of result) {
|
||||
for (lang of voice.languages) {
|
||||
var opt = document.createElement('option');
|
||||
opt.text = voice.name + ' (' + lang.name + ')';
|
||||
opt.value = [voice.name, lang.name];
|
||||
console.log('Adding voice: ' + opt.text);
|
||||
sel.add(opt);
|
||||
if (voice.name === 'default') {
|
||||
opt.id = 'default-voice';
|
||||
opt.selected = true;
|
||||
}
|
||||
var opt = document.createElement('option');
|
||||
var languages = voice.languages.map(function(lang) {
|
||||
return lang.name;
|
||||
}).join(", ");
|
||||
opt.text = voice.name + ' (' + languages + ')';
|
||||
opt.value = voice.identifier;
|
||||
console.log('Adding voice: ' + opt.text);
|
||||
sel.add(opt);
|
||||
if (voice.name === 'default') {
|
||||
opt.id = 'default-voice';
|
||||
opt.selected = true;
|
||||
}
|
||||
}
|
||||
console.log('Leaving cb2');
|
||||
|
||||
Reference in New Issue
Block a user