Форум программистов, компьютерный форум, киберфорум
C++ Builder
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.79/56: Рейтинг темы: голосов - 56, средняя оценка - 4.79
+1
345 / 178 / 53
Регистрация: 24.08.2010
Сообщений: 1,028

Озвучивание текста голосом через MS Speech Platform

17.07.2015, 09:18. Показов 10923. Ответов 5
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Народ, помогите разобраться, как использовать Microsoft Speech Platform.
В моей программе события выводятся в виде текста в StatusBar.
Хочу, чтобы они озвучивались голосом.

Microsoft Speech Platform – это набор инструментов, позволяющих разработчикам различных приложений, реализовывать в них возможность преобразования текста в голос.
Чтобы синтезатор речи работал, нужно установить:
Microsoft Speech Platform - Runtime – серверная часть платформы, предоставляющая API для программ (файл x86_SpeechPlatformRuntime\SpeechPlatform Runtime.msi).
Microsoft Speech Platform - Runtime Languages – языки для работы серверной части. В настоящее время есть 26 языков. Кстати, русский тоже есть - голос Elena (имя файла начинается с "MSSpeech_TTS_"...).

А дальше что, не пойму.
А может есть другие варианты?

Добавлено через 7 часов 46 минут
Вот что нарыл
C++
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
33
34
35
#include <vcl.h>
#pragma hdrstop
 
#include "Unit1.h"
#include "SAPI.h"
 
/*  96749377-3391-11D2-9EE3-00C04F797396 */
const CLSID CLSID_SpVoice= {0x96749377, 0x3391, 0x11D2, {0x9E, 0xE3,0x00,0xC0,0x4F,0x79,0x73,0x96}};
 
/*  6C44DF74-72B9-4992-A1EC-EF996E0422D4 */
const IID IID_ISpVoice  = {0x6C44DF74, 0x72B9, 0x4992, {0xA1, 0xEC,0xEF,0x99,0x6E,0x04,0x22,0xD4}};
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
    : TForm(Owner)
{
     ISpVoice * pVoice = NULL;
     if (FAILED(::CoInitialize(NULL)))
     return ;
 
HRESULT hr = CoCreateInstance(CLSID_SpVoice,NULL, CLSCTX_ALL, IID_ISpVoice, (void **)&pVoice);
     if( SUCCEEDED( hr ) )
        {
        hr = pVoice->Speak(L"Hello, world!", 0, NULL);
        hr = pVoice->Speak(L" Привет",0, NULL );
        pVoice->Release();
        pVoice = NULL;
        }
     ::CoUninitialize();
     return ;
}
//---------------------------------------------------------------------------
Так разговаривает, но русский текст игнорирует.
Кто-нибудь разберётся?
MSDN ISpVoice
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
17.07.2015, 09:18
Ответы с готовыми решениями:

Воспроизведение текста голосом
Нужна помощь!!! цель ввести в edit текст который через кнопку будет воспроизводиться. Как сделать?

Воспроизведение текста голосом
Добрый вечер, уважаемые программисты. Столкнулся с такой проблемой, как воспроизведение текста. Кратко опишу, что нужно)))). В поле...

Озвучивание текста своим голосом
Помогите пожалуйста сделать программку которая озвучивала бы текст из Textbox моим голосом. Например в Textbox содержится определенный...

5
place status here
 Аватар для gunslinger
3186 / 2220 / 640
Регистрация: 20.07.2013
Сообщений: 6,013
17.07.2015, 16:33
Кроме MSSpeech_TTS_ru-RU_Elena.msi есть еще MSSpeech_SR_ru-RU_TELE.msi.
И попробуй использовать метод SetVoice: https://msdn.microsoft.com/en-... voice.aspx.
0
+1
345 / 178 / 53
Регистрация: 24.08.2010
Сообщений: 1,028
17.07.2015, 18:25  [ТС]
Цитата Сообщение от gunslinger Посмотреть сообщение
И попробуй использовать метод SetVoice
Я читал про это. Только ума не приложу, как этим пользоваться.
Там нет упоминаний ни про елену, ни про теле.
Как установить нужный голос?
0
place status here
 Аватар для gunslinger
3186 / 2220 / 640
Регистрация: 20.07.2013
Сообщений: 6,013
17.07.2015, 22:54
Подробностей не знаю, не пользовался подобным.
0
+1
345 / 178 / 53
Регистрация: 24.08.2010
Сообщений: 1,028
19.07.2015, 04:10  [ТС]
В приложенном примере SetVoice программа должна озвучить текст на всех языках, установленных в системе.
C++
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
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
// Declare local identifiers:
HRESULT                        hr = S_OK;
CComPtr<ISpObjectToken>        cpVoiceToken;
CComPtr<IEnumSpObjectTokens>   cpEnum;
CComPtr<ISpVoice>              cpVoice;
ULONG                          ulCount = 0;
 
// Create the voice.
hr = cpVoice.CoCreateInstance(CLSID_SpVoice);
 
if (SUCCEEDED (hr))
{
   // Enumerate the installed voices.
   hr = SpEnumTokens(SPCAT_VOICES, NULL, NULL, &cpEnum;);
}
 
if (SUCCEEDED (hr))
{
   // Get the number of voices.
   hr = cpEnum->GetCount(&ulCount;);
}
 
// Obtain a list of installed voice tokens, set
// the voice to the token, and call Speak.
while (SUCCEEDED(hr) && ulCount--)
{
   cpVoiceToken.Release();
 
   if (SUCCEEDED (hr))
   {
      hr = cpEnum->Next(1, &cpVoiceToken;, NULL);
   }
 
   if (SUCCEEDED (hr))
   {
      hr = cpVoice->SetVoice(cpVoiceToken);
   }
 
   if (SUCCEEDED (hr))
   {
      hr = cpVoice->Speak( L"How are you?", SPF_DEFAULT, NULL );
   }
 
}
 
if (SUCCEEDED (hr))
{
   // Do more stuff here.
}
Но не хочет запускаться она.
Жаловалась на Undefined symbol 'CComPtr'.
Я нашел в инете и подсунул ей файлик atlcomcli.h
Только в нем есть неувязочка в виде #include <atlcore.h>
и, естественно, Unable to open include file 'atlcore.h'
А этого файла не могу нигде найти. Есть у кого?

Добавлено через 27 минут
Нашел где это всё скачать. Потом начала просить другой, третий и т.д. и все из серии atl*.h
Мож у меня что-то не установлено?

Добавлено через 31 минуту
код брал отсюда
0
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
 Аватар для volvo
33371 / 21497 / 8234
Регистрация: 22.10.2011
Сообщений: 36,893
Записей в блоге: 12
19.07.2015, 10:36
Лучший ответ Сообщение было отмечено +1 как решение

Решение

Цитата Сообщение от +1 Посмотреть сообщение
и все из серии atl*.h
Все из серии atl*.h было тупо выпилено из Билдера после 2010, из-за каких-то прибабахов Microsoft-а, и Эмбаркадеро прикрутила свой DAX вместо ATL. Так что все, для чего требуется ATL, можно компилировать версиями до 2010 включительно, но не более новыми. И хотя кто-то утверждает, что можно взять старую ATL из 2009-го, например - это ОЧЕНЬ непросто. У меня до сих пор один из проектов висит на 2009 только из-за того, что не можем подключить ATL, давно бы уже перенесли код в XE2/XE4, он бы сильно уменьшился. Ан нет, M$ и здесь нагадила...
2
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
19.07.2015, 10:36
Помогаю со студенческими работами здесь

Google Speech API - управление голосом
Привет. Мне нужно чтобы моя прога реагировала на голосовые команды. Хочу использовать Google Speech API, но не знаю как им пользоватся. Вот...

Microsoft Speech Platform
Здравствуйте. Я сильно туплю и не могу понять. Скачал и установил Microsoft Speech Platform - SDK, Microsoft Speech Platform - Runtime,...

Speech platform SDK
Здравствуйте. Писал на windows 7 программу управления компьютером с помощью голоса. Теперь сижу на windows 10, и не получается вообще...

Microsoft Speech Recognition Platform - как одновременно распознавать и русский, и английский
Добрый день. Использую Microsoft Speech Recognition Platform для распознавания голосового ввода. System.Globalization.CultureInfo ci; ...

Озвучивание текста.
Какие в делфи есть средства для того, чтобы программа могла прочитать текст на русском языке?


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
Первый деплой
lagorue 16.01.2026
Не спеша развернул своё 1ое приложение в kubernetes. А дальше мне интересно создать 1фронтэнд приложения и 2 бэкэнд приложения развернуть 2 деплоя в кубере получится 2 сервиса и что-бы они. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь постоянного тока с R, L, C, k(ключ), U, E, J. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа, решает её и находит токи на L и напряжения на C в установ. режимах до и. . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Изучаю kubernetes
lagorue 13.01.2026
А пригодятся-ли мне знания kubernetes в России?
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru