Код: Выделить всё
174: safe_exec('cscript ' . DOC_ROOT . '/rc/sapi.js ' . $message, 1, $level);
Смотрим скрипт, избавляемся от лишнего.
У меня получилось так:
Код: Выделить всё
if (WScript.Arguments.length == 0) {
WScript.Arguments.ShowUsage();
WScript.Quit();
}
var text = new Array();
for (var i=0; i<WScript.Arguments.Unnamed.Count; i++){
text.push(WScript.Arguments.Unnamed(i));
}
var sv = WScript.CreateObject("SAPI.SpVoice");
sv.WaitUntilDone(-1);
sv.speak(text.join(' '),0);
Логика там, видимо, такая:
пришла фраза проговорить, от нее считается хэш и ищется готовый файл, в имени которого этот хэш содержится.
Если такого файла нет,
1.говорим фразу
2.говорим эту фразу в файл с именем хэша (sapi_07cc694b9b3fc636710fa08b6922c42b.wav)
3.конвертим wav в mp3
Чтобы этот механизм заработал, нужно поменять имя скрипта sapi_cached.js на sapi.js (чтобы не править windows_tts.class.php, хотя и так, и так продержится до первого обновления)
Сейчас в sapi_cached.js не удаляются wav и присутствуют не понятные мне команды типа
strCommand = "@copy /B \"" + strMp3FileName + "\" + ,, \"" + strMp3FileName + "\"";
зы. в гит отписал
ззы. win7 IVONA 2 Tatyana - Russian female voice [22kHz] sapi5