1 (изменено: Yurachb, Сегодня 03:38:55)

Тема: VBS: Напоминание о дне недели

\

2 (изменено: Yurachb, Сегодня 03:38:23)

Re: VBS: Напоминание о дне недели

\

3

Re: VBS: Напоминание о дне недели

Для чтения по-русски в win10 можно использовать объект SAPI.SpVoice, а в Win7 SPEECH.SpVoice.

4 (изменено: Yurachb, Сегодня 03:37:57)

Re: VBS: Напоминание о дне недели

\

5

Re: VBS: Напоминание о дне недели

Надо установить ещё:
https://www.microsoft.com/en-us/downloa … x?id=27225
Если Елена не устраивает, то погуглите другие голоса.

6 (изменено: Yurachb, Сегодня 03:37:31)

Re: VBS: Напоминание о дне недели

\

7

Re: VBS: Напоминание о дне недели

https://harposoftware.com/en/russian/24 … Voice.html

8

Re: VBS: Напоминание о дне недели

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>
Передумал переделывать мир. Пашет и так, ну и ладно. Сделаю лучше свой !

9 (изменено: Yurachb, Сегодня 03:36:18)

Re: VBS: Напоминание о дне недели

\

10

Re: VBS: Напоминание о дне недели

Yurachb, пардоньте. К сожалению, не понял Ваши комментарии.

Некогда была озвучка на онлайн-сервисе Гугл-переводчика (сейчас там даже нет перевода для текста; я так подозреваю – нет для русских), и я из кэша извлекал аудиофайлы...

Так я в скрипте и использую генератор аудио от google translate. Он как работал, так и работает.

Сия wsf-схема отлично работает; но только онлайн, да и при медленном соединении с недопустимыми задержками.

Опять не понял смысл фразы. У Вас скрипт работает с ошибками в случае нестабильной или низкой скорости связи ?

написав практическую схему для создания файлов в кэше, и тогда это будет то что надо.

Требуется помощь или Вы уже Сами справились с задачей ?

Передумал переделывать мир. Пашет и так, ну и ладно. Сделаю лучше свой !

11 (изменено: Yurachb, Сегодня 03:35:04)

Re: VBS: Напоминание о дне недели

\

12

Re: VBS: Напоминание о дне недели

1) Синтаксис WSF здесь вообще непричём. Вы можете этот пример собрать как на голом JS и VBS. WSF лишь позволяет немного расширить функционал и удобство использования скриптов.

2) Видимо опять Вас не понимаю. Как же нет ? Я регулярно этим сервисом пользуюсь для перевода. https://translate.google.ru/

+ открыть спойлер

https://i.imgur.com/T4q8Upn.png

При нажатии на кнопку динамика отправляется GET запрос подобного типа:

https://translate.google.com/translate_ … &tl=en

Хотя параметров там на самом деле побольше.

3) Т.е Вам всё-таки нужен сэмпл по получению аудиофайла с google translate ?

Передумал переделывать мир. Пашет и так, ну и ладно. Сделаю лучше свой !

13

Re: VBS: Напоминание о дне недели

Возможно у Yurachb отключен javascript, либо IE устаревший.

14

Re: VBS: Напоминание о дне недели

Malcev, видимо да.

Передумал переделывать мир. Пашет и так, ну и ладно. Сделаю лучше свой !

15 (изменено: Yurachb, Сегодня 03:34:16)

Re: VBS: Напоминание о дне недели

\

16

Re: VBS: Напоминание о дне недели

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
Передумал переделывать мир. Пашет и так, ну и ладно. Сделаю лучше свой !

17 (изменено: Yurachb, Сегодня 03:33:16)

Re: VBS: Напоминание о дне недели

\

18

Re: VBS: Напоминание о дне недели

Yurachb, хорошо. На счёт системы теперь понятно. Но, к сожалению, дальнейший ответ не понимаю. Постарайтесь, пожалуйста, пояснять более развёрнуто.

Передумал переделывать мир. Пашет и так, ну и ладно. Сделаю лучше свой !

19 (изменено: Yurachb, Сегодня 03:32:37)

Re: VBS: Напоминание о дне недели

\

20

Re: VBS: Напоминание о дне недели

Yurachb,

Скрипт отличный, но слова сильно искажены, хотя, думаю, союзы и прочие слова получить можно; попробую.

Искажены ? У меня дни недели читаются абсолютно нормально. Да и там искажаться вроде бы особо не чему.

Можете выложить пример получившегося аудио с искажениями ?

Передумал переделывать мир. Пашет и так, ну и ладно. Сделаю лучше свой !

21

Re: VBS: Напоминание о дне недели

Yurachb пишет:

, но слова сильно искажены

Если вас не устраивает качество гугла, то поищите другие онлайн синтезаторы речи.
Например от яндекса.

22

Re: VBS: Напоминание о дне недели

Присоединяюсь к словам коллеги Malcev-а. Вполне можно использовать движок яндекса.

http://tts.voicetech.yandex.net/tts?for … xt=суббота

или responsivevoice

https://code.responsivevoice.org/getvoi … der=female

Передумал переделывать мир. Пашет и так, ну и ладно. Сделаю лучше свой !

23 (изменено: Yurachb, Сегодня 03:32:05)

Re: VBS: Напоминание о дне недели

\

24

Re: VBS: Напоминание о дне недели

Yurachb пишет:

посему приложения придётся строить на VBScript

Стройте на JScript, кто ж мешает.

25

Re: VBS: Напоминание о дне недели

Yurachb
Попробуйте для озвучки использовать программку  Балаболка. Работает на всех версиях Windows, начиная с ХР.
С подключенными голосовыми движками - отлично может озвучивать, либо создавать звуковые файлы из любого текста, как wav, так и mp3 и ряд других форматов.
Есть возможность подключения и коррекции словарей произношения, исправляющих произношения нужных слов на более правильные.
Рекомендую использовать голосовой движок IVONA-2 Tatyana. Также очень неплох старый, но все еще актуальный движок Nikolai. Он встречается в двух модификациях, лучше более поздняя. Из относительно неплохих еще могу порекомендовать - движки Алёна и Максим.
На сайте Балаболки в принципе есть указание и на ряд бесплатных движков.  Но лучше все же найти вышеуказанные, они более качественные.
Также на их сайте есть "Консольное приложение", которое можно запускать с параметрами строки (движок, темп речи, высота звука, сам текст) из командной строки в скрытом виде.
Несколько лет я использовал такой способ на работе для напоминания о событиях дня, разместив запускающий файл в Планировщик заданий.
Однако потом отказался. Заменив на более простой способ чтения звуковых файлов через скрипт, запускаемый оттуда же. Т.к. скажем при каждой переустановке системы с установкой движков заново, все они прописываются по разному каждый раз. Проще все-таки иметь уже готовый набор звуковых файлов, записанных любимым голосовым движком.
Голосовыми движками интересуюсь уже довольно таки давно, где-то с 2002-3 года тестирую все голосовые движки и использующие их программы, что попадаются, поэтому некоторый опыт по озвучиванию различных текстов, прежде всего художественных, все же накопил. ))
В связи с этим хотелось бы сообщить об одном очень важном моменте в озвучивании любого текста голосовыми движками.
Когда голосовые движки читают текст, при этом - и ударение в словах, и даже само произношение слов - очень сильно зависит от стоящих рядом знаков препинания. Т.е. расставляя эти знаки, а иногда даже разбивая вынужденно слово по слогам и вставляя эти знаки между слогами, можно добиться не только большей верности произнесения слова, но также и разных интонаций его произнесения.
Как наглядный пример различий - пристегнул два файла чтения Татьяны. В первом были написаны дни недели просто в столбец без знаков препинания. Во втором - через запятые, с точкой в самом конце.

Post's attachments

dni1-2.rar 286.68 kb, 3 downloads since 2018-11-22 

You don't have the permssions to download the attachments of this post.