нечего там мучатся оформляй однозначно
только думаю что надо просто остановится на мп3 и все
Отлично! Только если теперь однозначно можно будет определить наличие закэшированного файла, то можно даже не вызывать sapi-скрипт, а сразу отправлять файл на проигрывание через функцию playSound. А ещё было бы тогда здорово добавить инициирование события готовности файла кэша, как это сделано в модуле rhvoice, чтобы подписчики из других модулей могли его проиграть (терминалы наприример). Вот кусок кода из rhvoice:
if (file_exists($cached_filename)) {
processSubscriptions('SAY_CACHED_READY', array(
'level' => $level,
'tts_engine' => 'rhvoice',
'message' => $message,
'filename' => $cached_filename,
));
}
я прошу прошения - но такого в модуле я не нашел
function processSubscription($event, &$details) {
$this->getConfig();
if ($event == 'SAY' && !$details['ignoreVoice']) {
$level = $details['level'];
$message = $details['message'];
if ($level >= (int) getGlobal('minMsgLevel') && !IsWindowsOS()) {
$out = '';
$voice=$this->config['VOICE'];
$use_spd = $this->config['USE_SPD'];
$use_cache = $this->config['USE_CACHE'];
if ($use_spd) {
safe_exec('spd-say "'.$message.'" -w -y ' . $voice, 1, $out);
} else {
if ($use_cache) {
if (is_dir(ROOT . 'cms/cached')) {
$cached_filename = ROOT . 'cms/cached/voice/rh_' . md5($message) . '.wav';
} else {
$cached_filename = ROOT . 'cached/voice/rh_' . md5($message) . '.wav';
}
if (!file_exists($cached_filename)) {
safe_exec('echo "' . $message . '" | RHVoice-test -p ' . $voice . ' -o '.$cached_filename . ' && mplayer '.$cached_filename, 1, $out);
} else {
playSound($cached_filename,1);
}
} else {
safe_exec('echo "' . $message . '" | RHVoice-test -p ' . $voice, 1, $out);
}
}
$details['ignoreVoice'] = 1;
}
//...
}
}
Точно... это изменение я для Яндекса загружал похоже. Сейчас загружу для rhvoice.
А нет, загружал: https://github.com/sergejey/majordomo-rhvoice/blob...
Please login to leave comments. Join us!