На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
! ПРАВИЛА РАЗДЕЛА · FAQ раздела Delphi · Книги по Delphi
Пожалуйста, выделяйте текст программы тегом [сode=pas] ... [/сode]. Для этого используйте кнопку [code=pas] в форме ответа или комбобокс, если нужно вставить код на языке, отличном от Дельфи/Паскаля.
Следующие вопросы задаются очень часто, подробно разобраны в FAQ и, поэтому, будут безжалостно удаляться:
1. Преобразовать переменную типа String в тип PChar (PAnsiChar)
2. Как "свернуть" программу в трей.
3. Как "скрыться" от Ctrl + Alt + Del (заблокировать их и т.п.)
4. Как прочитать список файлов, поддиректорий в директории?
5. Как запустить программу/файл?
... (продолжение следует) ...

Вопросы, подробно описанные во встроенной справочной системе Delphi, не несут полезной тематической нагрузки, поэтому будут удаляться.
Запрещается создавать темы с просьбой выполнить какую-то работу за автора темы. Форум является средством общения и общего поиска решения. Вашу работу за Вас никто выполнять не будет.


Внимание
Попытки открытия обсуждений реализации вредоносного ПО, включая различные интерпретации спам-ботов, наказывается предупреждением на 30 дней.
Повторная попытка - 60 дней. Последующие попытки бан.
Мат в разделе - бан на три месяца...
Модераторы: jack128, D[u]fa, Shaggy, Rouse_
  
> Быстро замутить синтезированную речь
    Народ, пните плз - надо по быренькому сляпать простенькую прожку чтобы говорила компьютерным голосом. По заданному тексту. Не надо слишком круто, как в навигаторах современных, можно прям очень синтетически, даже лучше, нужна "компьютерность". Может есть готовое решение которое можно сразу к дельфе подключить чтобы из мемо текст читала?
      мыш
      В винде уже есть движок синтез речи. Покопай в эту сторону
        Спасибо, но мне бы вот не копать а сразу в дамки :) времени нет поэтому если есть решение типа подключи то то и апи такой то - был бы космически благодарен :) и еще у меня в виндовом синтезе ток англичане
          http://delphiworld.narod.ru/base/delphi_app_can_talk.html

          Цитата
          и еще у меня в виндовом синтезе ток англичане

          Необходимо установить русские голосовые движки, но они платные. В моей прожке разговаривала ScanSoft Katerina. Для "озвучить текст" - нормально.
          Сообщение отредактировано: Prince -
            Установил микрософтовскую Елену. Скачал даже готовое приложение на дельфи, которое должно загрузить списком движки, позволить выбрать один из них и проговаривать текст. Однако, при первой попытке обращения к некоему Com интерфейсу он выдает ошибку нарушения доступа.

            Посмотрел - оказалось процедура из OLE32 библиотеки CoCreateInstance возвращает код REGDB_E_CLASSNOTREG при попытке создания с ее помощью интерфейса для доступа к голосовому движку. Вот что в MSDN написано

            Цитата
            REGDB_E_CLASSNOTREG
            A specified class is not registered in the registration database. Also can indicate that the type of server you requested in the CLSCTX enumeration is not registered or the values for the server types in the registry are corrupt.


            и вот дальше я не пойму что делать...


            Приложение брал из статьи отсюда http://win.tiflocomp.ru/synths/sapi/sapi_delphi01.php
            Ссылка на само приложение: http://win.tiflocomp.ru/synths/sapi/exampl..._speechtest.zip
              Держи:
              http://edn.embarcadero.com/article/29583

              Добавлено
              http://www.webdelphi.ru/2010/05/sapi-5-4-d...-v-delphi-2010/

              Добавлено
              по-английски вообще все просто, 2 стройки кода:
              ExpandedWrap disabled
                var
                  SpVoice: Variant;
                 
                begin
                  SpVoice := CreateOleObject('SAPI.SpVoice');
                  SpVoice.Speak('hello, Can i help you?');
                end;


              Добавлено
              Как понимаю нужно через GetVoices найти голоса, затем через Voice присвоить этот голос и через Speak его произнести
                ^D^ima, спасибо, только там тоже не все гладко, при попытке скомпилировать скачанный проект пишет что нет пары модулей, которые нужно сгенерировать согласно статье
                http://www.webdelphi.ru/2010/03/speech-api...pyuter-govorit/
                однако инструкции в этой статье не соответствуют среде дельфи - import type library, первое действие которое нужно сделать просто отсутствует в меню Component

                Добавлено
                Ну я пока разбираюсь, не сдаюсь, но сдается мне что я еще вернусь :)
                Сообщение отредактировано: мыш -
                  вот на повершеле список движкев:
                  ExpandedWrap disabled
                    $V = New-Object -com "SAPI.spvoice"
                    $v.getvoices()|fl
                     
                     
                    Id       : HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Speech\Voices\Tokens\MS-Anna-1033-20-DSK
                    DataKey  : System.__ComObject
                    Category : System.__ComObject


                  Как понимаю этот ID нужно как-то скормить Voice и програть через Speak

                  https://msdn.microsoft.com/en-us/library/ms...2(v=vs.85).aspx

                  Добавлено
                  Можно скормить порядковый номер голоса так:
                  ExpandedWrap disabled
                      SpVoice := CreateOleObject('SAPI.SpVoice');
                     
                      spvoice.Voice := spvoice.GetVoices.Item(0); //тут
                     
                      SpVoice.Speak('hello, Can i help you?');


                  дальше все должно быть хорошо и по логике если стоит русский голос должен по-русски заговорить.
                    ^D^ima, спасибо еще раз что помогаешь. Решение оказалось проще чем во всех этих многочисленных статьях с зубодробительными модулями и переменными и вообще. Короче, все что я сделал - import library, сгенерировал во вкладку activeX библиотеку Microsoft Speech (она в диалоге была среди других библиотек доступна для выбора), в результате в дельфе появились новые компоненты. Кинул на форму TspVoice и у него простой метод

                    ExpandedWrap disabled
                      SpVoice1.Speak('Здравствуй мир',0);


                    В принципе, я счастлив, только голос мужской, а как его выбрать пока не понял.

                    Добавлено
                    ФСЁ. Решено. ^D^ima, еще раз спасибо. Вот как выбор голоса делается (четвертый голос - это нужная мне девочка аня)
                    ExpandedWrap disabled
                      procedure TForm6.FormCreate(Sender: TObject);
                      var
                        s: ISpeechVoice;
                        t:ISpeechObjectTokens;
                        tt:ISpeechObjectToken;
                        i:integer;
                      begin
                        t:=SpVoice1.GetVoices('','');
                       
                        for I := 0 to t.Count-1 do
                        begin
                          ListBox1.AddItem(t.Item(i).GetDescription(0),nil);
                        end;
                       
                        tt := t.Item(4);
                        SpVoice1.Voice := tt;
                        SpVoice1.Speak('Привет',0);
                      end;
                      мыш
                      Можешь сфоткать что у тебя тут(стрелку вниз нажми):
                      ExpandedWrap disabled
                        %windir%\SysWOW64\speech\SpeechUX\sapi.cpl

                      у меня после установки елены ничего не появилось

                      Добавлено
                      Цитата мыш @
                      Вот как выбор голоса делается (четвертый голос - это нужная мне девочка аня)

                      можно было просто его поставить:
                      ExpandedWrap disabled
                        SpVoice1.Voice := SpVoice1.GetVoices.Item(4);


                      Добавлено
                      без компонентов, вообще без всего
                        ^D^ima, в папке SpeechUX у меня вот что

                        ru-RU\
                        SpeechUXPS.DLL
                        sapi.cpl

                        Добавлено
                        Цитата ^D^ima @
                        можно было просто его поставить:

                        Да, теперь вижу :) А когда впервые прочел - не понял что ты советуешь поэтому полез чего то мудрить :)
                          Цитата мыш @
                          D^ima, в папке

                          да не в папке, а в окне cpl'а
                            Ты будешь смеяться, но что такое cpl
                            Сообщение отредактировано: мыш -
                              открой файл по очереди(через пуск) :
                              %windir%\SysWOW64\speech\SpeechUX\sapi.cpl
                              %windir%\System32\Speech\SpeechUX\sapi.cpl

                              и сфоть при нажатии стрелки вниз, если не трудно конечно.
                              Сообщение отредактировано: ^D^ima -
                                они одинаковые
                                Прикреплённый файлПрикреплённый файлUntitled_1.jpg (144,39 Кбайт, скачиваний: 516)
                                  ---
                                  Прикреплённый файлПрикреплённый файлUntitled_12.jpg (146,76 Кбайт, скачиваний: 354)
                                    спасибо
                                    0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
                                    0 пользователей:


                                    Рейтинг@Mail.ru
                                    [ Script execution time: 0,0437 ]   [ 21 queries used ]   [ Generated: 18.04.24, 16:56 GMT ]