Форум программистов, компьютерный форум, киберфорум
long399
Войти
Регистрация
Восстановить пароль
Карта форума Блоги Сообщество Поиск Заказать работу  
По возможности буду размещать интересные записи в своем блоге
Рейтинг: 3.00. Голосов: 2.

Учим компьютер говорить

Запись от long399 размещена 19.04.2014 в 13:01
Обновил(-а) long399 10.12.2020 в 09:56 (Перенос в другую категорию)

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

Для начала следует импортировать в Delphi SpeechLib_TLB. Для этого делаем следующие шаги:
Component->Import component->Import a type library->Microsoft speech object library.

Чтобы можно было произносить русские слова, следует скачать и установить любой русский голосовой движок. Я скачивал движок Acapela Elan Nikolaj 5.1 (Скину его ниже - Русский голосовой движок.rar).

Затем следует объявить такие объекты:
Delphi
1
2
3
4
5
6
7
8
9
10
type
  TForm1 = class(TForm)
    procedure FormCreate(Sender: TObject);
  private
    { Private declarations }
  public
  gpIVTxt: TSpVoice;
  Voices:ISpeechObjectTokens;
    { Public declarations }
  end;
В Oncreate формы сделаем следующее:
Delphi
1
2
3
    gpIVTxt:=TSpVoice.Create(nil);
    Voices:=gpIVTxt.GetVoices('','');
    gpIVTxt.Voice:=Voices.Item(1); // Будем говорить голосом установленного выше движка (Acapela Elan Nikolaj 5.1)
Чтобы сказать какую-то фразу пишем такой код:
Delphi
1
2
3
4
5
procedure TForm1.Button1Click(Sender: TObject);
begin
gpIVTxt.Speak(edit1.Text,SVSFlagsAsync); // Озвучится текст из edit1. Если не захочет говорить пробуем заменить 
// SVSFlagsAsync на SVSFDefault
end;
Можно писать так:
Delphi
1
2
3
4
procedure TForm1.Button1Click(Sender: TObject);
begin
gpIVTxt.Speak('Реструктуриза<ция',SVSFlagsAsync); // С помощью символа '<' - ставится ударение на букву перед ним
end;
Скидываю сделанную простейшую прогу (Балаболка.rar), которая произносит слова, записанные в edit. она будет работать, если установлен голосовой движок и выполнены все инструкции описанные выше.
Вложения
Тип файла: rar Русский голосовой движок.rar (10.74 Мб, 578 просмотров)
Тип файла: rar Балаболка.rar (583.3 Кб, 531 просмотров)
Показов 10471 Комментарии 5
Всего комментариев 5
Комментарии
  1. Старый комментарий
    Пишем в блокноте и сохраняем как VBS:
    Visual Basic
    1
    2
    3
    
    Dim Speak
    Set Speak = CreateObject("sapi.spvoice")
    Speak.Speak "Балаболка"
    Вариант миниморэ от Jimmy Jonezz:
    Delphi
    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
    50
    51
    52
    
    {$APPTYPE CONSOLE}
    uses Windows, Messages, ActiveX;
     
    procedure Write2(const s:string);
    asm
      push  0
      push  esp
      push  [eax-4]
      push  eax
      push  STD_OUTPUT_HANDLE
      call  GetStdHandle
      push  eax
      call  WriteFile
    end;
     
    const
      SAPI_SpVoice_ClassID:TGUID='{96749377-3391-11D2-9EE3-00C04F797396}';
     
    var
      Voice:IDispatch;
      DispParams:TDispParams;
      Arg:TVariantArg;
      Text:WideString;
    begin
      Text:=ParamStr(1);
      if Text='' then
      begin
        Write2('Usage: speak "some text"'#10);
        Exit;
      end;
     
      CoInitialize(nil);
     
      CoCreateInstance(SAPI_SpVoice_ClassID, nil, CLSCTX_INPROC_SERVER or
        CLSCTX_LOCAL_SERVER, IDispatch, Voice);
     
      if Voice=nil then
      begin
        Write2('SpeechAPI is not installed.'#10);
        Exit;
      end;
     
      Arg.vt:=VT_BSTR;
      Arg.bstrVal:=PWideChar(Text);
     
      DispParams.rgvarg:=@Arg;
      DispParams.rgdispidNamedArgs:=nil;
      DispParams.cArgs:=1;
      DispParams.cNamedArgs:=0;
     
      Voice.Invoke(12,GUID_NULL,0,1,DispParams,nil,nil,nil);
    end.
    Запись от raxp размещена 19.04.2014 в 14:26 raxp вне форума
  2. Старый комментарий
    Аватар для long399
    Возьму на заметку предложенные вами варианты Вариант, который я описал - я где-то в Интернете нашел и мне он простым показался.
    Запись от long399 размещена 19.04.2014 в 20:00 long399 вне форума
  3. Старый комментарий
    Аватар для droider
    Делал когда-то подобное, но без русского движка
    Запись от droider размещена 19.04.2014 в 22:52 droider вне форума
  4. Старый комментарий
    Аватар для long399
    Довольно полезная вещь. Можно для своей софтины типо голосового хелпа делать, инструкции какие-нибудь для пользователей
    Запись от long399 размещена 19.04.2014 в 23:12 long399 вне форума
  5. Старый комментарий
    а как остановить во время речи ? стоп и пауза ?
    Запись от nobobic размещена 15.04.2015 в 19:49 nobobic вне форума
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru