1 (изменено: Yurachb, 2018-08-23 10:43:35)

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

Напоминание о текущем дне недели.
Звуковые файлы взяты давно из переводчика от Гугл. Если у кого есть файлы лучшие, опубликуйте. Также, если есть, опубликуйте ссылку на подобный ресурс...

Post's attachments

days.7z 21.91 kb, 14 downloads since 2018-08-23 

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

2 (изменено: Yurachb, 2018-08-24 09:39:42)

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

stealzy пишет
Планируется ли в следующей версии сделать напоминание о текущем часе?

В самом файле информация об этом есть.

Я много лет пользуюсь, и это оказалось весьма полезным.

В моей личной версии есть hta дополнение, напоминающее о событии и о оставшемся до него времени, но не хватает некоторых слов, для чего тему и опубликовал и попросил помочь найти „места” озвучивания слов...

3

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

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

4 (изменено: Yurachb, 2018-08-24 12:13:23)

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

Скачал „Елена”, но сценарий VBScript.vbs говорит:
Ошибка: Не удается найти класс программируемых объектов с именем "SPEECH.SpVoice".
Тогда как озвучивание переводчика 'xetranslator' работает.
Впрочем, такой звук, в сравнении с гугловским или с микрофонным, совсем не годится.
Спасибо, конечно, но, к сожалению, вопрос не снят.

5

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

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

6 (изменено: Yurachb, 2018-09-19 17:59:23)

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

Установил компонент Speech Platform – файл SpeechPlatformRuntime.msi
Прямая ссылка (x64):
https://yadi.sk/d/FBI8vqNwZbPaR
и всё заработало, но голос слишком глухой.

Русский голос Елена прямая ссылка:
https://yadi.sk/d/Y-axw4ZnZbPoS

На семёрке тоже работает, но через транслит:
CreateObject("Sapi.SpVoice").Speak"Privet"

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, 2018-09-24 21:18:06)

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

Xameleon: можно сохранить фразы через XMLHTTP/WINHTTP + ADODB.Stream для кэша.

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

10

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

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

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

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

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

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

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

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

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

11 (изменено: Yurachb, 2018-09-24 22:14:54)

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

Синтаксис wsf мне неизвестен, и я ничего из этого не понимаю, а учиться некогда, да и нет возможности. Я проверил кэш, там гугловский translate_tts[1].dat, а нужен аудиофайл, вот и всё: будет, возьму, не будет, пойду дальше искать. Я имел ввиду страницу: http://translate.google.ru/#en/ru, где такого сервиса больше нет – да и вообще ничего, думаю для русских, нет: у меня страница более не работает.

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, 2018-09-25 01:48:59)

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

IE8. В Рамблер-браузере тоже ничего нет, только:
...войдите в аккаунте, Выбрать все и Поделиться; однако перевод работает.
Войти же не получается, в меню восстановления пароля кнопки неактивны, хотя и пробовал уже в Google Chrome... Сменить № телефона не предлагает, но пишет № старый... Итак, вошёл, но в Google Chrome картина всё та же: изображения динамика нет.

В IE8 же выскакивает страница: 403. That’s an error

Your client does not have permission to get URL / from this server. (Client IP address: ***.***.***.*)

У вашего клиента нет разрешения на получение URL / с этого сервера. (IP-адрес клиента: ***.***.***.*)

Вот я и подумал о блокировке по „вражьей” причине...

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, 2018-09-25 01:55:59)

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

Win7x64
Перевёл слова: 403. Это ошибка, и динамики появились...

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

18

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

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

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

19

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

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