Форум программистов, компьютерный форум, киберфорум
VBScript/JScript/WSH/WMI/HTA
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.67/48: Рейтинг темы: голосов - 48, средняя оценка - 4.67
1 / 1 / 2
Регистрация: 28.02.2017
Сообщений: 96
1

Чтение(произношение) текста через vbs

02.08.2018, 22:47. Просмотров 9371. Ответов 15
Метки нет (Все метки)

У меня есть такой код:
Visual Basic
1
2
3
Eho=inputbox ("Напиши сюда что-то", "Эхо", "Пиши сюда") 
Set sapi=CreateObject("sapi.spvoice") 
sapi.Speak ""&Eho&""
По стандарту скрипт читает одним голосом. Мне надо поменять скорость и тон голоса. Желательно расписать команды, какая за что отвечает, если не сложно.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
02.08.2018, 22:47
Ответы с готовыми решениями:

Запись и чтение текста через Memo и TFileStream
На форме есть поле Memo, две кнопки для чтения и записи текста в файл, OpenDialog для сохранения и...

Чтение русского текста в String через консоль
Есть код public class JavaApplication1 { public static void main(String args) throws...

VBS: Чтение 64 разрядной ветки реестра
Привет всем. Есть такая функция, которая проверяет наличие того или иного установленного ПО на...

Вставка текста из VBS в cmd
Добрый день! Пробую написать скрипт на vbs для автоматической авторизацией под другой учеткой:...

15
3089 / 1639 / 612
Регистрация: 06.06.2017
Сообщений: 5,548
02.08.2018, 22:58 2
GGirito
А оно вам надо, когда есть готовые средства?
0
1 / 1 / 2
Регистрация: 28.02.2017
Сообщений: 96
02.08.2018, 23:00  [ТС] 3
Мне надо именно скрипт. Если бы я хотел говорилку то сюда бы не писал
0
3089 / 1639 / 612
Регистрация: 06.06.2017
Сообщений: 5,548
03.08.2018, 00:00 4
Visual Basic
1
2
3
4
5
6
Set SpVoice = CreateObject("SAPI.SpVoice")
SpVoice.Rate = -2 ' диапазон скорости от -10 до 10
SpVoice.Volume = 100  ' громкость от 0 до 100
Set SpVoice.Voice = SpVoice.GetVoices("Name=Microsoft Anna").Item(0)
CreateObject("WScript.Shell").PopUp "Speak " & SpVoice.Voice.GetDescription, 3,,4144
SpVoice.Speak "Hi, this is Microsoft Anna"
1
1 / 1 / 2
Регистрация: 28.02.2017
Сообщений: 96
03.08.2018, 10:52  [ТС] 5
вот такую ошибку пишет
0
Миниатюры
Чтение(произношение) текста через vbs  
1 / 1 / 2
Регистрация: 28.02.2017
Сообщений: 96
03.08.2018, 11:14  [ТС] 6
Покажу на примере настроек экранного диктора. Есть три параметра - голос, скорость, тон. И мне нужен код, где можно настраивать все эти три параметра.
Как я понял, .Rate это скорость, .Volume это громкость, .Voice это голос. А какой параметр отвечает за тон голоса?
Прошу не путать настройки мужского/женского голоса и их тон, это две разные настройки
0
Миниатюры
Чтение(произношение) текста через vbs  
3089 / 1639 / 612
Регистрация: 06.06.2017
Сообщений: 5,548
03.08.2018, 20:46 7
Лучший ответ Сообщение было отмечено GGirito как решение

Решение

Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
Set SpVoice = CreateObject("SAPI.SpVoice")
'—————————————————————————————————————————————————————————————
' Прослушать вcе голоса:
Set RExp = New RegExp: RExp.Pattern = "^[^-(]+(?=[-(].+)"
For Each oVoice in SpVoice.GetVoices
  SpVoice.Speak "Speak " & RExp.Execute(oVoice.GetDescription)(0)
Next
'—————————————————————————————————————————————————————————————
' Входные параметры процедуры Speak:
'   произносимый текст
'   голосовые данные (имя, возраст, пол, язык, вендор, формат)
'   скорость в диапазоне от -10 до 10
'   громкость в диапазоне от 0 до 100
'   тон в диапазоне от -10 до 10
'—————————————————————————————————————————————————————————————
Speak "Now is " & Now, "Age=Adult;Gender=Female", 0,  60, -10
Speak "Hello, World!", "Age=Adult;Gender=Male",   5,  70, -5
Speak "Hello, World!", "Age=Child;Gender=Male",   2,  80, 0
Speak "Hello, World!", "Name=Microsoft Irina",   -2,  90, -5
Speak "Hello, World!", "Name=Microsoft Anna",    -5, 100, 10
 
Sub Speak(Text, Voice, Speed, Volume, Tone)
  On Error Resume Next
  Set SpVoice.Voice = SpVoice.GetVoices(Voice).Item(0)
  If Err.Number Then
    MsgBox SpVoice.Voice.GetDescription & ": " & Err.Description &_
    vbCr & "Неверно заданы голосовые данные (" & Voice & ")!", 4144 : On Error Goto 0
  Else
    SpVoice.Rate = Speed : SpVoice.Volume = Volume
    SpVoice.Speak "<pitch middle=""" & Tone & """><context>" & Text & "</context></pitch>"
  End If
End Sub
0
1 / 1 / 2
Регистрация: 28.02.2017
Сообщений: 96
04.08.2018, 10:51  [ТС] 8
Пишет такие ошибки, и я услышал только два голоса. Это, по идеи, "стандартный" и "мужской"
0
Миниатюры
Чтение(произношение) текста через vbs   Чтение(произношение) текста через vbs   Чтение(произношение) текста через vbs  

3089 / 1639 / 612
Регистрация: 06.06.2017
Сообщений: 5,548
04.08.2018, 16:46 9
Лучший ответ Сообщение было отмечено GGirito как решение

Решение

GGirito, что значит "стандратный"? У разных систем разный голос. У меня Microsoft Anna, у вас Microsoft Irina. Всего у вас в системе установлено 2 голоса. Я так понял, что при одноразовой отработке скрипта слышали вы их дважды.
Окна ошибок отладочные, чтобы вы могли разобраться самостоятельно, где допущены ошибки. В первом окне видно, что в 18 строке в качестве пола указан ребёнок, что не соответствует критерию в совокупности данных. Если только один мужской взрослный голос (David), это соответствует данным из 17 строки.
В последующих окнах видно, что заданные имена не подхватились системой. В первом случае (19 строка) из-за неполного написания имени (вероятно, нужно писать полностью — так, как у вас на скриншоте, хотя это не всегда требуется), я полагаю. Во втором (20 строка) — из-за отсутствия в системе.

См. ветку HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Speech\Voices\Tokens\TokenEnums\) с профилями (умолчательное значение в них и содержимое ключа Attributes (см. 11 строку с комментарием).

В остальном конкретно по исходному запросу ответ получен?
1
1 / 1 / 2
Регистрация: 28.02.2017
Сообщений: 96
04.08.2018, 22:57  [ТС] 10
А как тогда понять такое? У меня в реестре всего три голоса, а в списке диктора намного больше. Как использовать голос, которого нету в реестре по этому пути?
0
Миниатюры
Чтение(произношение) текста через vbs  
Изображения
 
3089 / 1639 / 612
Регистрация: 06.06.2017
Сообщений: 5,548
04.08.2018, 23:50 11
См. те же ветки в кусте HKEY_CURRENT_USER вместо HKEY_LOCAL_MACHINE.
Если они там, то надо думать, почему они не цепляются в GetVoices-коллекцию. Возможно, от прав зависит.
0
1 / 1 / 2
Регистрация: 28.02.2017
Сообщений: 96
05.08.2018, 08:23  [ТС] 12
в пути HKEY_CURRENT_USER\Software\Microsoft\Speech\Voices указано только это. Я вот думаю, может просто добавить/поменять путь на голос, который мне нужен из списка диктора?
0
Миниатюры
Чтение(произношение) текста через vbs  
1 / 1 / 2
Регистрация: 28.02.2017
Сообщений: 96
05.08.2018, 08:45  [ТС] 13
В пути HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\SPEECH\Voices\Tokens лежат три голоса, которыми пользуется vbs.
В пути HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Speech_OneCore\Voices лежат голоса, которые мне нужны.
Диктор видит и те, и те. А можно ли как-то заставить vbs использовать вторую папку с голосами?
0
Изображения
  
3089 / 1639 / 612
Регистрация: 06.06.2017
Сообщений: 5,548
06.08.2018, 09:16 14
Цитата Сообщение от GGirito Посмотреть сообщение
может просто добавить/поменять путь на голос
Какой путь? Голос может быть задан тот, что присутствует в коллекции GetVoices в соответствии с заданными критериями. Судя по всему, голоса, установленные не по стандарту, не поддерживаются интерфейсом SAPI 5.3. Для 5.4 уже другие средства нужны.

А есть разница при запуске скрипта от x32/x64 интерпретатора?:
%SystemRoot%\SysWOW64\wscript.exe
%SystemRoot%\SYSTEM32\wscript.exe
0
1 / 1 / 2
Регистрация: 28.02.2017
Сообщений: 96
06.08.2018, 11:33  [ТС] 15
У меня нету папки SysWOW64
я на win10 x32
0
3089 / 1639 / 612
Регистрация: 06.06.2017
Сообщений: 5,548
08.08.2018, 21:53 16
Тогда труба дело.
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
08.08.2018, 21:53

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

VBS для смены текста в RDP файлах
Здравствуйте! Нужен скрипт для смены текста в RDP-файлах по аналогии с этим . Файлов много. Есть...

Чтение текста из String и создание на его основе текста в Textbox
Дорогие друзья, суть проблемы: допустим у нас есть label в котором посредством запроса WMI получаем...

[MFC] Передача текста в MDI окно, чтение текста из окна
Для редактирования бинарного файла, содержащего разные данные, к примеру, серийный номер...

Чтение текста сообщения. И текста вложения к почте файла
Как читать текст сообщения письма mail И скачивания прикрепленного вложения к письму Добавлено...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
16
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.