Тема: VBS: Напоминание о дне недели
\
Вы не вошли. Пожалуйста, войдите или зарегистрируйтесь.
Серый форум → Общение → Windows Script Host, HTA (VBScript, JScript) → VBS: Напоминание о дне недели
Страницы 1
Чтобы отправить ответ, вы должны войти или зарегистрироваться
\
\
Для чтения по-русски в win10 можно использовать объект SAPI.SpVoice, а в Win7 SPEECH.SpVoice.
\
Надо установить ещё:
https://www.microsoft.com/en-us/downloa … x?id=27225
Если Елена не устраивает, то погуглите другие голоса.
\
Yurachb, как альтернативу можно использовать WMPlayer.OCX (вроде как он присутствует в Win начиная с XP) в совмещении с google translate. К тому же можно сохранить фразы через XMLHTTP/WINHTTP + ADODB.Stream для кэша.
textToSpeech.wsf
<?xml version="1.0"?>
<job>
<script language="vbscript">
<![CDATA[
Dim vDate
vDate = Now
vDate = "Сегодня " & WeekDayName(WeekDay(vDate)) & " " & FormatDateTime(vDate,vbShortDate) & " " & FormatDateTime(vDate,vbShortTime)
]]>
</script>
<script language="jscript">
<![CDATA[
textToSpeech(vDate)
function textToSpeech(text, language){
text = String(text||"")
with(new ActiveXObject("WMPlayer.OCX")){
settings.volume = 100
url = "https://translate.google.com/translate_tts?ie=UTF-8&client=tw-ob&q=" + encode(text) + "&tl=" + encode(language||"ru")
while(playState != 1){
WScript.Sleep(100)
}
}
function encode(s){
return encodeURIComponent(s).replace(/%20/g,"+")
}
}
]]>
</script>
</job>
\
Yurachb, пардоньте. К сожалению, не понял Ваши комментарии.
Некогда была озвучка на онлайн-сервисе Гугл-переводчика (сейчас там даже нет перевода для текста; я так подозреваю – нет для русских), и я из кэша извлекал аудиофайлы...
Так я в скрипте и использую генератор аудио от google translate. Он как работал, так и работает.
Сия wsf-схема отлично работает; но только онлайн, да и при медленном соединении с недопустимыми задержками.
Опять не понял смысл фразы. У Вас скрипт работает с ошибками в случае нестабильной или низкой скорости связи ?
написав практическую схему для создания файлов в кэше, и тогда это будет то что надо.
Требуется помощь или Вы уже Сами справились с задачей ?
\
1) Синтаксис WSF здесь вообще непричём. Вы можете этот пример собрать как на голом JS и VBS. WSF лишь позволяет немного расширить функционал и удобство использования скриптов.
2) Видимо опять Вас не понимаю. Как же нет ? Я регулярно этим сервисом пользуюсь для перевода. https://translate.google.ru/
При нажатии на кнопку динамика отправляется GET запрос подобного типа:
https://translate.google.com/translate_ … &tl=en
Хотя параметров там на самом деле побольше.
3) Т.е Вам всё-таки нужен сэмпл по получению аудиофайла с google translate ?
Возможно у Yurachb отключен javascript, либо IE устаревший.
Malcev, видимо да.
\
Yurachb,
1)
Итак, вошёл, но в Google Chrome картина всё та же: изображения динамика нет.
Что-то печально у Вас с браузером дела обстоят. А какая у Вас система, если не секрет ? Не XP ли часом ?
2) Попробовал собрать Вам код на VBS с комментариями. Думаю он прояснит ситуацию. При запуске скрипт сохраняет аудио файлы с именами дней недели в том же каталоге.
Option Explicit
Const adTypeBinary = 1
Const adSaveCreateOverWrite = 2
Dim i, oGoogleSpeech, strText
Set oGoogleSpeech = new cGoogleSpeech
'Создание объекта Stream для записи файлов на диск
With CreateObject("ADODB.Stream")
.Type = adTypeBinary
For i = 1 to 7
'Перебор всех дней недели и получение их текстового наименования
strText = WeekdayName(i)
'Запрос к Google Speech для получения аудио файла и возврат результата в Stream
.Open
.Write oGoogleSpeech.TextToAudioStream(strText,"ru")
'Сохранение файлов с именами дней недели
.SaveToFile strText & ".mp3", adSaveCreateOverWrite
.Close
Next
End With
'Класс модуль для выполнения запросов к сервису google translate
Class cGoogleSpeech
Private oHtmlDoc
Private Sub Class_Initialize()
'Создание объекта HTMLDocument для использования движка JavaScript и его функции encodeURIComponent
Set oHtmlDoc = CreateObject("htmlfile")
'Инициализация движка JS
oHtmlDoc.script.execScript ";"
End Sub
'Функция кодирование URI
Private Function EncodeURI(Text)
EncodeURI = Replace(oHtmlDoc.Script.encodeURIComponent(Text),"%20","+")
End Function
'Функция получения байт массива аудио записи в mp3
Function TextToAudioStream(Text, Language)
With CreateObject("WinHttp.WinHttpRequest.5.1")
'Смена User-Agent, чтобы Google не отсекал запросы
.Option(0) = "Api request"
.Open "GET", "https://translate.google.com/translate_tts?ie=UTF-8&client=tw-ob&q=" + EncodeURI(Text) + "&tl=" & EncodeURI(Language), False
.Send
if .Status <> 200 Then Err.Raise vbObjectError + 1, TypeName(Me), "Failed to request google api ! Response status: " & .Status & " " & .StatusText
'Возврат байт массива из функции
TextToAudioStream = .ResponseBody
End With
End Function
End Class
\
Yurachb, хорошо. На счёт системы теперь понятно. Но, к сожалению, дальнейший ответ не понимаю. Постарайтесь, пожалуйста, пояснять более развёрнуто.
\
Yurachb,
Скрипт отличный, но слова сильно искажены, хотя, думаю, союзы и прочие слова получить можно; попробую.
Искажены ? У меня дни недели читаются абсолютно нормально. Да и там искажаться вроде бы особо не чему.
Можете выложить пример получившегося аудио с искажениями ?
, но слова сильно искажены
Если вас не устраивает качество гугла, то поищите другие онлайн синтезаторы речи.
Например от яндекса.
Присоединяюсь к словам коллеги Malcev-а. Вполне можно использовать движок яндекса.
http://tts.voicetech.yandex.net/tts?for … xt=суббота
или responsivevoice
https://code.responsivevoice.org/getvoi … der=female
\
посему приложения придётся строить на VBScript
Стройте на JScript, кто ж мешает.
Yurachb
Попробуйте для озвучки использовать программку Балаболка. Работает на всех версиях Windows, начиная с ХР.
С подключенными голосовыми движками - отлично может озвучивать, либо создавать звуковые файлы из любого текста, как wav, так и mp3 и ряд других форматов.
Есть возможность подключения и коррекции словарей произношения, исправляющих произношения нужных слов на более правильные.
Рекомендую использовать голосовой движок IVONA-2 Tatyana. Также очень неплох старый, но все еще актуальный движок Nikolai. Он встречается в двух модификациях, лучше более поздняя. Из относительно неплохих еще могу порекомендовать - движки Алёна и Максим.
На сайте Балаболки в принципе есть указание и на ряд бесплатных движков. Но лучше все же найти вышеуказанные, они более качественные.
Также на их сайте есть "Консольное приложение", которое можно запускать с параметрами строки (движок, темп речи, высота звука, сам текст) из командной строки в скрытом виде.
Несколько лет я использовал такой способ на работе для напоминания о событиях дня, разместив запускающий файл в Планировщик заданий.
Однако потом отказался. Заменив на более простой способ чтения звуковых файлов через скрипт, запускаемый оттуда же. Т.к. скажем при каждой переустановке системы с установкой движков заново, все они прописываются по разному каждый раз. Проще все-таки иметь уже готовый набор звуковых файлов, записанных любимым голосовым движком.
Голосовыми движками интересуюсь уже довольно таки давно, где-то с 2002-3 года тестирую все голосовые движки и использующие их программы, что попадаются, поэтому некоторый опыт по озвучиванию различных текстов, прежде всего художественных, все же накопил. ))
В связи с этим хотелось бы сообщить об одном очень важном моменте в озвучивании любого текста голосовыми движками.
Когда голосовые движки читают текст, при этом - и ударение в словах, и даже само произношение слов - очень сильно зависит от стоящих рядом знаков препинания. Т.е. расставляя эти знаки, а иногда даже разбивая вынужденно слово по слогам и вставляя эти знаки между слогами, можно добиться не только большей верности произнесения слова, но также и разных интонаций его произнесения.
Как наглядный пример различий - пристегнул два файла чтения Татьяны. В первом были написаны дни недели просто в столбец без знаков препинания. Во втором - через запятые, с точкой в самом конце.
Страницы 1
Чтобы отправить ответ, вы должны войти или зарегистрироваться