Робота з Microsoft Speech API в Delphi, Різне, Програмування, статті

В ході створення програмного забезпечення виникає бажання доповнити можливості створюваного додатка голосовим інтерфейсом.


Якщо можливості розпізнання голосу ще далекі від досконалості і простому програмісту не по силам, то змусити ваш додаток вельми стерпно заговорити може будь-який програміст.


Про це подбали фахівці Microsoft випустивши на ринок безкоштовний ActiveX компонент TextToSpeech входить в стандартну комплектацію WinMe і Win 2x.


Якщо у Вас цього компонента немає Вам необхідно скачати і встановити Microsoft Speech API 4.0 і російський чоловічий і жіночий голос Lernout & Hauspie Text-To-Speech.


Застосування цього компонента дозволяє значно розширити функціональні можливості інтерфейсу створюваної програми. Приємно коли програма говорить “людським голосом”. Як приклад моя програма спілкування по мережі.


Розглянемо приклад застосування Microsoft Speech API.


Використовуємо пізніше зв’язування звільняє програміста від написання зайвого коду і полегшує надалі модифікацію програми.


Для розміщення ActiveX компонентів будемо використовувати універсальний клас-контейнер TAxControl, Докладно описаний в книзі “Delphi для професіоналів” автори Олександрівський А.Д. і Шубін В.В..



unit axControl;
{Клас-контейнер для ActiveX (компонента управління). }
interface
uses
   Windows, Messages, Classes, Controls,
   ActiveX, OleCtrls,StdCtrls; //
///********************************************************************
type
TAxControl = class(TOleControl)//
private
CControlData: TControlData2; / / Інформація про ActiveX.
protected
  procedure InitControlData; override;
public
  property CData : TControlData2 read CControlData;
  constructor Create (AOwn : TComponent;AGUID : TGUID);
end;
implementation
//////////////////////////////////////////////////////////////////////////////
constructor TAxControl. Create (AOwn : TComponent ;AGUID : TGUID);
  begin
FillChar (CControlData, sizeof (CControlData), 0); / / обнуляє поле з інформацією про Active
CControlData.ClassID: = AGUID; / / Вказуєте QUID компонента, який буде створюватися.
inherited Create (AOwn); / / викликаємо конструктор предка.
ControlStyle: = ControlStyle + [csClickEvents]; / / Стиль відображення
  end ;
///////////////////////////////////////////////////////////////////////////////////
procedure TAxControl. InitControlData;
  begin
ControlData: = @ CControlData; / / Вказуєте адресу, де знаходиться інформація про ActiveX.
  end;
//////////////////////////////////////////////////////////////////////////////////////
end.

Розміщуємо TextToSpeech на Delphi компонент Panel і встановлюємо стандартні властивості.


Якщо ж на вашому комп’ютері вже встановлені компоненти, відбудеться ініціалізація TextToSpeech, який озвучить поточний час.



  var compon:TAxControl;
  procedure TForm1.FormCreate(Sender: TObject);
    begin
      try
        compon:=TAxControl.Create(self,stringtoguid(“{EEE78591-FE22-11D0-8BEF-0060081841DE}”));
        compon.Parent:=panel1;
        compon.Visible:=true;
        compon.Top:=10; 
        compon.Left:=10;
        compon.Width:=100;
        compon.Height:=100;
        compon.OleObject.Speak(timetostr(time));
      except
form1.Caption: = “установка SpeechAPI”;
messagebox (form1.Handle, “встанови Speech API”, “помилка”, 0);
        panel1.Width:=300;
        panel1.Height:=250;
/ / Компонент WebBrowser
        compon:=TAxControl.Create(self,stringtoguid(“{8856F961-340A-11D0-A96B-00C04FD705A2}”));
        compon.Parent:=panel1;
        compon.Visible:=true;
        compon.Top:=20;
        compon.Left:=0;
        compon.OleObject.Navigate2(“http://activex.microsoft.com/activex/controls/sapi/spchapi.exe.”,0,0,00);
      end;
    end;

Розглянемо більш докладно найбільш загальні властивості і методи TextToSpeech:


У більшості програм вистачає цих властивостей і методів. Але SpeechToText деякі слова вимовляє некоректно.


Для вирішення цієї проблеми є кілька шляхів:


Підключення словників через виклик LexiconDlg, вручну, незручно – бібліотеку типів цього модуля, особисто я, не знайшов.


Залишається створення свого обробника з викликом методів:



procedure TForm1.Button5Click(Sender: TObject);
  begin
compon.OleObject.TextData (2,0, edit2.Text) ;/ / вимовити фонемний код
  end;

procedure TForm1.Button6Click(Sender: TObject);
  begin
edit2.Text: = compon.OleObject.Phonemes (2,10, edit1.Text) ;/ / перетворити в фонемний код
  end;


Використовуючи фонетичний алфавіт Ви можете в широких межах змінювати вимову. SpeechAPI компонент зручний для любителів Web-програмування, так як підтримує інтерфейс IObjectSefety і відповідно безпечний для використання в сценаріях JavaScript і VbScript.

Схожі статті:


Сподобалася стаття? Ви можете залишити відгук або підписатися на RSS , щоб автоматично отримувати інформацію про нові статтях.

Коментарів поки що немає.

Ваш отзыв

Поділ на параграфи відбувається автоматично, адреса електронної пошти ніколи не буде опублікований, допустимий HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

*

*