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

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

Вернуться   Форум программистов > Операционные системы > Софт
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 10.03.2014, 18:37   #1
Smogg
Участник клуба
 
Регистрация: 14.06.2011
Сообщений: 1,138
По умолчанию декстопная прожка Гугль - Speach-to-Text

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

Кто-нибудь чем подобным пользуется, а не то и сам написал?

Что-то ничего адекватного не выгугливается.

Упоминание в заголовке темы Гугла - потому что его этот сервис самый работоспособный для распознавания.
Smogg вне форума Ответить с цитированием
Старый 10.03.2014, 18:52   #2
raxp
Старожил
 
Регистрация: 29.09.2009
Сообщений: 9,713
По умолчанию

...специально наборщик не писал для блокнота, но это прикрутить пару функций, через SendMessage().

Описание API вызова библиотеки GoogleSpeechRecognizeAPI3.DLL

Цитата:
Cистемные требования и зависимости:
1. Win32 (NT/2003/XP/7)
2. Требуется наличие Интернет-канала
3. ssleay32.dll + libeay32.dll для работы с OpenSSL

ПРОЕКТЫ на основе:
• Интерактивный голосовой переводчик www.youtube.com/watch?v=Etch0Qj1R7Y
• Голосовой контроль плеера AIMP www.youtube.com/watch?v=eIqKQcD7FEg
• Голосовой контроль Arduino по каналу блютуз через HC-05 www.youtube.com/watch?v=ELdbxYty76Y
• Голосовой модуль управления нагрузками USB.HID www.youtube.com/watch?v=aqzYZov_L1o

FIX:
• убрано использование DirectX.
• переведено на работу с потоком в DLL.
• добавлена полная автоматизация распознавания по пороговому уровню.

Данная библиотека (далее DLL) для работы с сервисом GoogleSpeech RecognizeAPI через POST-запросы в ОС NT/2000/2003/XP/7 предназначена для распознавания речи OFFTIME и REALTIME в автоматическом режиме, по задаваемому пользователем пороговому уровню, языку и задержке отслеживания окончания фразы (триггера "тишины").

DLL предоставляет универсальный доступ для других приложений вне зависимости от языка в среде Win32 (64-bit не тестировалось). Для использования DLL в своих проектах соблюдайте соглашение об stdcall-вызовах. Тип соглашения о вызове объявляется после прототипа функции, будь то объявление функционального типа или же объявление функции.

Пример динамического подключения:
Код:
var

  get_soundlevel: function: integer; stdcall;           // текущий уровень громкости
  recognize     : procedure(var
                            full_answer_google,         // полная строка ответа от сервиса
                            recognize_flag,             // признак распознавания
                            recognize_text: pansichar;  // распознанный текст
                            var
                            recognize_accuracy: integer // достоверность распознавания, %
                            ); stdcall;
 
  start         : procedure(threshold_level,            // уровень порога срабатывания, %
                            delay_off:                  // задержка отключения, мс
                            integer;
                            ruen:                       // язык распознавания
                            pansichar); stdcall;
  stop          : procedure; stdcall;
  set_thresholdlevel_delayoff_ruen: procedure(threshold_level, // уровень порога срабатывания, %
                                              delay_off:       // задержка отключения, мс
                                              integer;
                                              ruen:            // язык распознавания
                                              pansichar); stdcall;


  LibHandle: THandle;


function LinkProc(ProcName: string):Pointer;
begin
 result:= GetProcAddress(LibHandle, PChar(ProcName))
end;


{ инициализация }
begin
 LibHandle:= LoadLibrary('test\GoogleSpeechRecognizeAPI3.dll');
 if LibHandle<>0 then begin
  // старт модуля
  start:= LinkProc('start');
  // стоп модуля
  stop := LinkProc('stop');
  // задание порога, времени задержки и языка распознавания REALTIME
  set_thresholdlevel_delayoff_ruen:= LinkProc('set_thresholdlevel_delayoff_ruen');
  // получение уровня сигнала REALTIME
  get_soundlevel:= LinkProc('get_soundlevel');
  // получение результатов распознавания REALTIME
  recognize     := LinkProc('recognize');
 end;
...


{ деинициализация }
begin
 stop;
 FreeLibrary(LibHandle)
...


{ примеры вызова }


// визуализация текущего уровня REALTIME (по таймеру или в потоке)
var temp: integer;
    full_answer_google,          // полная строка ответа от сервиса
    recognize_flag,              // признак распознавания
    recognize_text: pansichar;   // распознанный текст
    recognize_accuracy: integer; // достоверность распознавания, %
begin
 temp:= get_soundlevel;
 panel2.Height:= panel1.Height * temp div 100;
 label1.Caption:= format('%d', [temp]) + '%';

 // распознать REALTIME по превышению порога с задержкой
 inc(gl_inc);
 if gl_inc > 1000 div timer1.Interval then begin
  gl_inc:= 0;
  memo1.Clear;

  full_answer_google:= '';
  recognize(full_answer_google,
            recognize_flag,
            recognize_text,
            recognize_accuracy);

  // результаты
  memo1.Lines.Add(format('%s', [full_answer_google]));
  memo1.Lines.Add(format('%s', [recognize_flag]));
  memo1.Lines.Add(format('Текст: %s', [recognize_text]));
  memo1.Lines.Add(format('Достоверность: %d', [recognize_accuracy]) + '%');
 end;
...


// задание параметров задержки и порога REALTIME
set_thresholdlevel_delayoff_ruen(20 {%}, 1000 {мс}, 'ru')
...
забрать или отсюда (на форуме ограничение)
Разработки и научно-технические публикации :: Видеоблог :: Твиттер
Radar systems engineer & Software developer of industrial automation
raxp вне форума Ответить с цитированием
Старый 10.03.2014, 18:58   #3
raxp
Старожил
 
Регистрация: 29.09.2009
Сообщений: 9,713
По умолчанию

Описание API вызова библиотеки SpeechTranslateSpeech.DLL
(голосовой переводчик с голосовым вводом)

Цитата:
Данная библиотека (далее DLL) предназначена для голосового интерактивного перевода речевых фраз и предложений OFFTIME или REALTIME в автоматическом режиме, по задаваемым пользователем пороговому уровню, языку оригинала, языку перевода и задержке отслеживания окончания фразы (триггера "тишины"). Функционал интерактивного перевода включает: авто-отслеживание голоса, распознавание, перевод, озвучивание на языке перевода и перенаправление аудиопотока на заданное аудиоустройство. Что дает возможность перенаправления аудиопотока? Фактически данный голосовой переводчик можно использовать не только локально для себя, но и для интерактивного перевода речи удаленного абонента в VoIP приложениях (к примеру, вы говорите на русском, данный аудиопоток библиотекой после распознавания, перевода, речевого синтеза перевода перенаправляется голосовым переводчиком на заданное аудиоустройство, которое является входом по-умолчанию для VoIP приложения (допустим Skype), и абонент слышит уже перевод, скажем на итальянском). Для реализации данного режима потребуется с помощью VAC (Virtual Audio Cable*) создать следующую цепочку: голосовой переводчик -> виртуальный выход - виртуальный вход -> VoIP приложение. Два таких голосовых переводчика, установленных у двоих разноязычных абонентов, позволяют общаться им друг с другом на своих родных языках в псевдо REALTIME.
Цитата:
* Virtual Audio Cable - виртуальный звуковой кабель (VAC) представляет собой звуковой (Wave) драйвер Windows, создающий в системе два звуковых устройства (порта): Virtual Cable n In и Virtual Cable n Out, где n — номер кабеля начиная с 1. К каждому из портов может быть присоединено любое количество приложений (клиентов); эта возможность в зарубежных документах носит название multi-client feature. Звуковые сигналы, выводимые приложениями в порт Out, смешиваются в единый сигнал, который затем передается всем приложениям, извлекающим звук из порта In. От приложений требуется лишь умение работать со стандартными Wave-устройствами Windows — и ничего больше.
DLL предоставляет универсальный доступ для других приложений вне зависимости от языка в среде Win32 (64-bit не тестировалось). Для использования DLL в своих проектах соблюдайте соглашение об stdcall-вызовах. Тип соглашения о вызове объявляется после прототипа функции, будь то объявление функционального типа или же объявление функции.

Пример вызова из под VBS:
Код:
' регистрируем COM объект DynamicWrapperX в тихом режиме
Dim WshShell
Set WshShell = WScript.CreateObject("WScript.Shell")
WshShell.Run ("regsvr32.exe dynwrapx.dll /s"),3, true
' создаем объект DynamicWrapperX
Set Wrap = CreateObject("DynamicWrapperX")
Wrap.Register "SpeechTranslateSpeech.dll", "start", "i=llssbl", "f=s", "r=s"
' инициализация голосового перевода
res = Wrap.start(20, 1000, "ru", "it", 1, 0)
' бесконечный цикл
Do 
WScript.Sleep 1000 'кол-во миллисекунд
Loop
забрать или отсюда (на форуме ограничение) | посмотреть
Разработки и научно-технические публикации :: Видеоблог :: Твиттер
Radar systems engineer & Software developer of industrial automation
raxp вне форума Ответить с цитированием
Старый 10.03.2014, 19:06   #4
Smogg
Участник клуба
 
Регистрация: 14.06.2011
Сообщений: 1,138
По умолчанию

Бгык)) Ашипка)

Но в целом спасибо! Дллелька Ваша, я понимаю?
Изображения
Тип файла: jpg err.jpg (111.7 Кб, 58 просмотров)
Smogg вне форума Ответить с цитированием
Старый 10.03.2014, 19:09   #5
raxp
Старожил
 
Регистрация: 29.09.2009
Сообщений: 9,713
По умолчанию

Указываем окружение, где запускаем ...и с какой радости вы попереносили либы из папки test рядом с программой, скриншот пожалуйста полностью.
Разработки и научно-технические публикации :: Видеоблог :: Твиттер
Radar systems engineer & Software developer of industrial automation

Последний раз редактировалось raxp; 10.03.2014 в 19:14.
raxp вне форума Ответить с цитированием
Старый 10.03.2014, 19:16   #6
Smogg
Участник клуба
 
Регистрация: 14.06.2011
Сообщений: 1,138
По умолчанию

Win7, 64бит.

Если запускать просто из каталога demo, то окошко появляется и индикатор уровня шевелится. А если скопировать в подкаталог test (т.е. к дллелям поближе) и запустить - то такая фигня.

К сожалению, у меня пока нету времени чтоб компилировать и разбираться, и конкретно указать строчку выпадения глюка .
Smogg вне форума Ответить с цитированием
Старый 10.03.2014, 19:26   #7
raxp
Старожил
 
Регистрация: 29.09.2009
Сообщений: 9,713
По умолчанию

Ваши действия сродни шаманству, и время вы тратите совершенно не на то.

1- в описании, что тут, что в текстовом файле приложенных архивов есть четкое указание под какой ОС и какой разрядности.
2- где, с чего такое желание DLL переносить куда вздумается, даже ничего не прочитав, а?
Разработки и научно-технические публикации :: Видеоблог :: Твиттер
Radar systems engineer & Software developer of industrial automation
raxp вне форума Ответить с цитированием
Старый 10.03.2014, 20:09   #8
Smogg
Участник клуба
 
Регистрация: 14.06.2011
Сообщений: 1,138
По умолчанию

А, вот как надо! Тогда самом деле работает) Значит у вас пути жестко зашиты и в демке ошибки не очень обрабатываются.

А можно в этой демке прикрутить еще чуть побольше описаний состояния работы программы: ожидаю начала записи, завершаю запись, запрашиваю сервер?
Smogg вне форума Ответить с цитированием
Старый 10.03.2014, 20:14   #9
Smitt&Wesson
Старожил
 
Аватар для Smitt&Wesson
 
Регистрация: 31.05.2010
Сообщений: 13,543
По умолчанию

Мы бы, давно это уже-бы написали. Но у юзеров, мозги атрофируются.
Пиши пьяным, редактируй трезвым.
Справочник по алгоритмам С++ Builder
Smitt&Wesson вне форума Ответить с цитированием
Старый 10.03.2014, 20:26   #10
raxp
Старожил
 
Регистрация: 29.09.2009
Сообщений: 9,713
По умолчанию

Цитата:
Значит у вас пути жестко зашиты
в смысле жестко? Пути относительные заданы.

Цитата:
А можно в этой демке прикрутить еще чуть побольше описаний состояния
согласен со Smitt&Wesson. Можно все, если желание есть.
Разработки и научно-технические публикации :: Видеоблог :: Твиттер
Radar systems engineer & Software developer of industrial automation
raxp вне форума Ответить с цитированием
Ответ


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

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
edit text Nokia3310 Общие вопросы Delphi 9 05.02.2013 09:32
Процедуры: Ввод(text)-Вычисление(string)-Вывод(text) FYBVFPFYBC Помощь студентам 2 06.05.2010 23:15
Не компилицца прожка phobos Общие вопросы C/C++ 2 18.04.2009 15:15