Для озвучивания приложений есть, конечно, голосовые движки и разные "Говорилки", но не у всех установлены и всегда разные, поэтому всегда будет проблема с переносом файлов, где-то будет работать, где-то чего-то не хватает, не установлено, или установлено но не то. Идея в том чтобы оснастить файл голосовыми комментариями не используя сторонние приложения. Для этого используем запрос в облако. Тут достаточно наличия выхода в Интернет. Вот модуль для "облачной" озвучки приложений VBA. * Нарисовано "на коленке", но концептуально работает. Критика и предложения по улучшению, - приветствуются.
[vba]
Код
' Функция "text_to_Voice" позволяет использовать голосовые сообщения ' в ваших программах VBA, ' независимо от наличия голосовых движков на машине пользователя, ' при наличии выхода в Интернет, используя "облачные технологии", ' и услуги предоставляемые на страничке "http://www.linguatec.de/voice-reader-home-15-demo/"
' При использовании "text_to_Voice" в других книгах ' В модуле "Эта книга" не забудьте разместить следующий код: ' Private Sub Workbook_BeforeClose(Cancel As Boolean) ' IE_Quit ' End Sub ' 'Полезные ссылки: 'http://www.excelworld.ru/forum/10-8090-1 'https://technet.microsoft.com/en-us/aa752043 Dim IE As Object
Public Sub text_to_Voice(voice As Integer, myStr As String) ' myStr - строка озвучки до 255 символов ' voice - тип голоса 0 = жен. ' 1 = муж. Dim sURL As String, testhWnd As Long sURL = "http://www.linguatec.de/voice-reader-home-15-demo/" On Error Resume Next testhWnd = IE.hWnd 'проверка на существование IE If Err.Number <> 0 Then ' если IE не существует Set IE = CreateObject("InternetExplorer.Application") ' open Internet Explorer With IE .Visible = False 'видимость .Navigate sURL ' переход While .Busy Or (.readyState <> 4): DoEvents: Wend ' ожидание Set ieDoc = .document If ieDoc.Title Like "Ошибка сертификата*" Or ieDoc.Title Like "Certificate Error*" Then ieDoc.Links(1).Click While IE.Busy Or (IE.readyState <> 4): DoEvents: Wend End If End With End If On Error GoTo err0 '------------------------------------------------------------- Set ieDoc = IE.document With ieDoc .getElementByID("vr_LanguageSelector").Value = "ru-ru" .getElementByID("vr_LanguageSelector").onChange If voice = 0 Then .getElementByID("vr_VoiceSelector").Value = "Milena" Else .getElementByID("vr_VoiceSelector").Value = "Yuri" End If .getElementByID("vr_SampleText").Value = myStr .getElementByID("vr_ReadButton").Click End With Exit Sub err0: MsgBox "Ошибка в text_to_Voice" End Sub
Public Sub IE_Quit() ' При использовании "text_to_Voice" в других книгах ' В модуле "Эта книга" не забудьте разместить следующий код: ' Private Sub Workbook_BeforeClose(Cancel As Boolean) ' IE_Quit ' End Sub On Error Resume Next IE.Quit End Sub
'============================= 'Примеры использования "text_to_Voice" Public Sub V_test0() Call text_to_Voice(0, " Соединение со спутниками установлено успешно") Application.Wait (Now + TimeValue("0:00:04")) 'или так text_to_Voice 1, " привет" Application.Wait (Now + TimeValue("0:00:01")) text_to_Voice 0, " Теперь вы сможете оснастить свою программу голосовыми сообщениями, и примечаниями" End Sub
Public Sub V_test1() 'или так text_to_Voice 0, ActiveCell.Value End Sub
[/vba]
Для озвучивания приложений есть, конечно, голосовые движки и разные "Говорилки", но не у всех установлены и всегда разные, поэтому всегда будет проблема с переносом файлов, где-то будет работать, где-то чего-то не хватает, не установлено, или установлено но не то. Идея в том чтобы оснастить файл голосовыми комментариями не используя сторонние приложения. Для этого используем запрос в облако. Тут достаточно наличия выхода в Интернет. Вот модуль для "облачной" озвучки приложений VBA. * Нарисовано "на коленке", но концептуально работает. Критика и предложения по улучшению, - приветствуются.
[vba]
Код
' Функция "text_to_Voice" позволяет использовать голосовые сообщения ' в ваших программах VBA, ' независимо от наличия голосовых движков на машине пользователя, ' при наличии выхода в Интернет, используя "облачные технологии", ' и услуги предоставляемые на страничке "http://www.linguatec.de/voice-reader-home-15-demo/"
' При использовании "text_to_Voice" в других книгах ' В модуле "Эта книга" не забудьте разместить следующий код: ' Private Sub Workbook_BeforeClose(Cancel As Boolean) ' IE_Quit ' End Sub ' 'Полезные ссылки: 'http://www.excelworld.ru/forum/10-8090-1 'https://technet.microsoft.com/en-us/aa752043 Dim IE As Object
Public Sub text_to_Voice(voice As Integer, myStr As String) ' myStr - строка озвучки до 255 символов ' voice - тип голоса 0 = жен. ' 1 = муж. Dim sURL As String, testhWnd As Long sURL = "http://www.linguatec.de/voice-reader-home-15-demo/" On Error Resume Next testhWnd = IE.hWnd 'проверка на существование IE If Err.Number <> 0 Then ' если IE не существует Set IE = CreateObject("InternetExplorer.Application") ' open Internet Explorer With IE .Visible = False 'видимость .Navigate sURL ' переход While .Busy Or (.readyState <> 4): DoEvents: Wend ' ожидание Set ieDoc = .document If ieDoc.Title Like "Ошибка сертификата*" Or ieDoc.Title Like "Certificate Error*" Then ieDoc.Links(1).Click While IE.Busy Or (IE.readyState <> 4): DoEvents: Wend End If End With End If On Error GoTo err0 '------------------------------------------------------------- Set ieDoc = IE.document With ieDoc .getElementByID("vr_LanguageSelector").Value = "ru-ru" .getElementByID("vr_LanguageSelector").onChange If voice = 0 Then .getElementByID("vr_VoiceSelector").Value = "Milena" Else .getElementByID("vr_VoiceSelector").Value = "Yuri" End If .getElementByID("vr_SampleText").Value = myStr .getElementByID("vr_ReadButton").Click End With Exit Sub err0: MsgBox "Ошибка в text_to_Voice" End Sub
Public Sub IE_Quit() ' При использовании "text_to_Voice" в других книгах ' В модуле "Эта книга" не забудьте разместить следующий код: ' Private Sub Workbook_BeforeClose(Cancel As Boolean) ' IE_Quit ' End Sub On Error Resume Next IE.Quit End Sub
'============================= 'Примеры использования "text_to_Voice" Public Sub V_test0() Call text_to_Voice(0, " Соединение со спутниками установлено успешно") Application.Wait (Now + TimeValue("0:00:04")) 'или так text_to_Voice 1, " привет" Application.Wait (Now + TimeValue("0:00:01")) text_to_Voice 0, " Теперь вы сможете оснастить свою программу голосовыми сообщениями, и примечаниями" End Sub
Public Sub V_test1() 'или так text_to_Voice 0, ActiveCell.Value End Sub
Задумка хорошая, но у меня не заработало Во-первых, голос моего компа зовут Anna без вариантов. Во-вторых, посмотрела в панели управления, русский текст не озвучивается, только английский. Но даже после внесения этих исправлений в код ничего не услышала (правда, не совсем уверена, что надо написать вместо "ru-ru"). Видимо, моему компьютеру чего-то не хватает
Задумка хорошая, но у меня не заработало Во-первых, голос моего компа зовут Anna без вариантов. Во-вторых, посмотрела в панели управления, русский текст не озвучивается, только английский. Но даже после внесения этих исправлений в код ничего не услышала (правда, не совсем уверена, что надо написать вместо "ru-ru"). Видимо, моему компьютеру чего-то не хватаетPelena
"Черт возьми, Холмс! Но как??!!" Ю-money 41001765434816
после внесения этих исправлений в код ничего не услышала
Как раз тут ничего править и не требуется, функция не зависит от ваших языковых движков и установленных языков. Код должен открыть невидимый экземпляр Интернет Эксплорера, [vba]
Код
Set IE = CreateObject("InternetExplorer.Application")
[/vba]И перейти по ссылке "http://www.linguatec.de/voice-reader-home-15-demo/", (тут, кстати, возможна некоторая задержка на время загрузки, в момент первого обращения) На этой страничке он сам выбирает, и голос, и язык, и вставляет Ваш текст в нужное место. Вот Вы его и должны были услышать. "У меня не заработало" - тут не знаю что подсказать. попробуйте просто вручную пройти по этой ссылке в своём Интернет Эксплорере, и проверить будет-ли воспроизводить звук ваш комп. возможно что-то с настройками компа, интернета, фаервола, Эксплорера.
после внесения этих исправлений в код ничего не услышала
Как раз тут ничего править и не требуется, функция не зависит от ваших языковых движков и установленных языков. Код должен открыть невидимый экземпляр Интернет Эксплорера, [vba]
Код
Set IE = CreateObject("InternetExplorer.Application")
[/vba]И перейти по ссылке "http://www.linguatec.de/voice-reader-home-15-demo/", (тут, кстати, возможна некоторая задержка на время загрузки, в момент первого обращения) На этой страничке он сам выбирает, и голос, и язык, и вставляет Ваш текст в нужное место. Вот Вы его и должны были услышать. "У меня не заработало" - тут не знаю что подсказать. попробуйте просто вручную пройти по этой ссылке в своём Интернет Эксплорере, и проверить будет-ли воспроизводить звук ваш комп. возможно что-то с настройками компа, интернета, фаервола, Эксплорера.al-Ex
Сообщение отредактировал al-Ex - Суббота, 11.02.2017, 20:43
IE ущербный какой-то. Сайт пишет: "Your browser does not support the audio element. "
Вот это возможно, с IE так бывает, то-ли версия не та, то-ли настройки, так что ничего идеального не бывает. Хотели уйти от языковых движков и настроек компа. А попадаем в зависимость от капризов IE, увы.
IE ущербный какой-то. Сайт пишет: "Your browser does not support the audio element. "
Вот это возможно, с IE так бывает, то-ли версия не та, то-ли настройки, так что ничего идеального не бывает. Хотели уйти от языковых движков и настроек компа. А попадаем в зависимость от капризов IE, увы.al-Ex
Сообщение отредактировал al-Ex - Вторник, 21.02.2017, 20:10
Давно интересовался этой темой и тут вдруг - такая находка Заработало, но как-то через раз, но я о другом. нашел на киберфоруме интересную темку - Форма браузер. И теперь вот появилась идея отказаться от ИЕ и прикрутить эти 2 файла друг к другу. Но, пока ума (знаний) не хватает. Пробую. Идея какая - использовать элемент Explorer.2 формы вместо CreateObject("InternetExplorer.Application") естественно, форма здесь не нужна будет.
Давно интересовался этой темой и тут вдруг - такая находка Заработало, но как-то через раз, но я о другом. нашел на киберфоруме интересную темку - Форма браузер. И теперь вот появилась идея отказаться от ИЕ и прикрутить эти 2 файла друг к другу. Но, пока ума (знаний) не хватает. Пробую. Идея какая - использовать элемент Explorer.2 формы вместо CreateObject("InternetExplorer.Application") естественно, форма здесь не нужна будет.VictorM
Это не принципиально, - тот-же IE, и те-же капризы будут. Вообще, тема "зацепила" меня, попозже будет вариант "облачной озвучки" VBA приложений, вообще без использования браузера. Пока изучаю "матчасть".
Это не принципиально, - тот-же IE, и те-же капризы будут. Вообще, тема "зацепила" меня, попозже будет вариант "облачной озвучки" VBA приложений, вообще без использования браузера. Пока изучаю "матчасть".al-Ex