Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Visual C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 11.06.2012, 13:30   #1
Артегор
Пользователь
 
Регистрация: 28.06.2011
Сообщений: 24
По умолчанию Распознавание речи

Воодушевленный программками типа Siri (на IOS) и Ассистент (на андроиде )
решил попытаться сделать подобное для ПК на языке С++ (пользуюсь VS 2010 ).
Нашёл в гугле кучу статей ,но от их разнообразия и порой противоречия решил лучше поспрашивать тут ...

И так свои вопросы лучше разложу по полкам
1) Что вообще нужно (хотя бы базого ) знать что бы написать программу для распознавания речи ?
2) Как заставить говорить их по русски (и понимать русскую речь) ?
3) Обязательно ли нужны математические расчеты для высчитывания децибел и прочего или же можно обойтись стандартными чарами стрингами и тп?
Артегор вне форума Ответить с цитированием
Старый 11.06.2012, 16:29   #2
raxp
Старожил
 
Регистрация: 29.09.2009
Сообщений: 9,742
По умолчанию

...если с нуля и исключительно свое: голова нужна толковая, пару научных институтов, деньги и время и еще раз деньги на отбивку патентов. Если не с нуля, SpeechAPI от Микрософта многое может.

А что же противоречивого вы нашли в куче статей?
Разработки и научно-технические публикации :: Видеоблог :: Твиттер
Radar systems engineer & Software developer of industrial automation
raxp вне форума Ответить с цитированием
Старый 11.06.2012, 17:18   #3
Артегор
Пользователь
 
Регистрация: 28.06.2011
Сообщений: 24
По умолчанию

Цитата:
Сообщение от raxp Посмотреть сообщение
...если с нуля и исключительно свое: голова нужна толковая, пару научных институтов, деньги и время и еще раз деньги на отбивку патентов. Если не с нуля, SpeechAPI от Микрософта многое может.

А что же противоречивого вы нашли в куче статей?
SpeechAPI вариант ,но на сколько знаю он русский не поддерживает
Артегор вне форума Ответить с цитированием
Старый 11.06.2012, 22:47   #4
raxp
Старожил
 
Регистрация: 29.09.2009
Сообщений: 9,742
По умолчанию

...распознавание нет (хотя есть варианты - GOLOS, KOMANDA), воспроизведение да, за счет дополнительных движков.

Код:
// -----------------------------------------------------------
// FDLIB_raxpcam
// Модуль обнаружения лиц на фото и видео в реальном времени
// на основе OpenSource Face Detection Library от Wolf Kienzle
//
// H-page: http://raxp.radioliga.com
//
// Cистемные требования и зависимости:
// 1. Win32 (NT/2003/XP/7) + VFW + SAPI
// 2. Встроен речевой синтезатор XVOICE.dll
// 3. Встроен речевой декодер XLISTEN.dll
// -----------------------------------------------------------

program FDLIB_raxpcam_api;


uses Windows, Messages, sysutils, Classes, graphics,
     activex, ACTIVEVOICEPROJECTLib_TLB, ACTIVELISTENPROJECTLib_TLB;

type
  dsr_ = class
   procedure listen(ASender: TObject; flags,
                    beginhi, beginlo, endhi, endlo: Integer; const Phrase, parsed: WideString;
                    results: Integer);

   procedure vu(ASender: TObject; beginhi, beginlo, level: Integer);
  public
   constructor Create;
   destructor Destroy; override;
end;


// РЕЧЕВОЙ модуль ==================
procedure speeks(t: string);
begin // синтез
 dss.Initialized:= 0;
 with dss do begin
  pitch:= 170;
  speed:= 50;
  LanguageID($409);
  Speak(t)
 end;
end;

procedure dsr_.listen(ASender: TObject; flags,
  beginhi, beginlo, endhi, endlo: Integer; const Phrase, parsed: WideString;
  results: Integer);
begin // распознавание
 if uppercase(text) = 'GOLOS' then speeks('ГАВ, ГАВ, ГАВ')
end;

procedure dsr_.vu(ASender: TObject; beginhi,
  beginlo, level: Integer);
begin
 lvl:= level
end;
// END РЕЧЕВОЙ модуль ==================


constructor dsr_.Create;
Begin
 inherited Create;

 CoInitialize(nil);
 // инициализация синтезатора XVOICE.dll
 dss:= TDirectSS.Create(nil);

 // инициализация распознавания XLISTEN.dll
 dsr:= TDirectSR.Create(nil);
 if dsr.CountEngines > 0 then begin
  dsr.OnPhraseFinish:= listen;
  dsr.OnVUMeter:= vu;
  //
  dsr.Initialized:=1;
  dsr.Select(1);
  dsr.GrammarFromFile('VoiceCommands.ini');
  dsr.Activate
 end;
End;

destructor dsr_.Destroy;
Begin
 // деинициируем речевой движок
 dsr.Deactivate; dsr.Free;
 dss.Free;

 CoUninitialize;
 //
 inherited Destroy
End;

..........

var
  msg  : TMsg;
  Rect : TRect;
  wnd  : TWndClassEx;
  
begin
 // создаем класс для возможности обработки событий компонента
 dsr1:= dsr_.Create;


 // динамическое подключение Face Detection Library
 LibHandle:= LoadLibrary('fdlib.dll');
 Win32Check(LibHandle<>0);
 fdlib_getndetections:= LinkProc('fdlib_getndetections');
 fdlib_detectfaces    := LinkProc('fdlib_detectfaces');
 fdlib_getdetection   := LinkProc('fdlib_getdetection');

 // инициализация
 bi:= TBitmap.Create;

 ......................
 //speeks('Application for the detection of face in real time');

 // главный цикл обработки сообщений
 while GetMessage(msg, 0, 0, 0) do begin
  TranslateMessage(msg);
  DispatchMessage(msg)
 end;

 // при закрытии приложения
 KillTimer(h_wnd, 0);
 SendMessage(h_cam, WM_CAP_STOP, 0, 0);
 SendMessage(h_cam, WM_CAP_DRIVER_DISCONNECT, 0, 0);
 deleteobject(font);
 dsr1.Destroy;

 // деинициализация объекта загрузки
 bi.Free
end.
Разработки и научно-технические публикации :: Видеоблог :: Твиттер
Radar systems engineer & Software developer of industrial automation
raxp вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Распознавание речи php Krasi PHP 5 29.08.2011 08:37
Синтезатор речи tonatas Мультимедиа в Delphi 4 30.01.2011 10:33
синтез речи+файл drak2000 Мультимедиа в Delphi 2 21.01.2011 14:12
Распознание речи в Delphi toxich Мультимедиа в Delphi 8 28.03.2010 08:54
Ошибки в прямой речи Scolopendra Microsoft Office Word 13 10.12.2009 11:21