1

Тема: AHK: Анализ звука.

Можно ли научить АНК различать звуки? Хотя бы на самом примитивном уровне.
Мне не нужно распознавание речи, само по себе.
  Мне нужно чтобы скрипт опознавал и отличал от всего остального, заранее записанные слова, допустим такие как "Ок", "Броузер" и  "Закрыть".

2

Re: AHK: Анализ звука.

Теоретически можно, но встроенных функций или команд для подобной задачи нет.

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Skype dmitry_fiveg

3

Re: AHK: Анализ звука.

А чем и как можно в АНК анализировать звук и сравнивать с файлом?

4

Re: AHK: Анализ звука.

По всей видимости, придется использовать winapi через DllCall, а точнее не смогу подсказать.

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Skype dmitry_fiveg

5

Re: AHK: Анализ звука.

https://autohotkey.com/board/topic/9645 … cognition/

6

Re: AHK: Анализ звука.

Значит безнадёжно.

7

Re: AHK: Анализ звука.

А разве по ссылке не то, что вам нужно?

8

Re: AHK: Анализ звука.

Ничего там не понял.

9 (изменено: Malcev, 2015-11-17 00:46:07)

Re: AHK: Анализ звука.

Там написано, что нужно скачать Speech SDK.
C Win7 она уже идет в пакете, поэтому наверное надо установить только language pack, если он не установлен.
У меня винда английская и английский понимает.
http://www.microsoft.com/en-us/download … x?id=10121
А в скрипте раскомментировать эти строчки:

TrayTip, Speech Recognition, Say something (press Escape to close)
s := new CustomSpeech ;create the custom speech recognizer
s.Recognize(True)
Esc::ExitApp

10

Re: AHK: Анализ звука.

Какой-то форум странный. Хотел репутацию добавить, а он убавилась. И исправить нельзя 300 минут. Прости Мальцев. Буду пробовать.

11

Re: AHK: Анализ звука.

Сообщает, что ошибка в этой строке:

throw Exception("Could not create recognition context: " . e.Message)

Всё "null"

12

Re: AHK: Анализ звука.

Это всё работает только на англоязычном интерфейсе Windows. А сменить интерфейс можно только на Windows 7 Максимальная и Windows 7 Корпоративная.

http://i.imgur.com/hnJ3ph4.jpg

А у меня, например, Домашняя расширенная.
Вот есть статья, как всё же сменить язык на других версиях, я не стал пробовать.

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Skype dmitry_fiveg

13

Re: AHK: Анализ звука.

А такой код?
Может зависит от битности автохотки? У меня 32 бита.

#Persistent
#SingleInstance
; For voice recognition to work you need Microsoft SAPI installed in your PC, some versions of Windows don't support voice recognition though.
; You may also need to train voice recognition in Windows so that it will understand your voice.

MsgBox, Please wait until voice recognition is activated. You will be notified when that happens. Press OK to continue.

pspeaker := ComObjCreate("SAPI.SpVoice")

;plistener := ComObjCreate("SAPI.SpSharedRecognizer") 

plistener:= ComObjCreate("SAPI.SpInprocRecognizer") ; For not showing Windows Voice Recognition widget.


paudioinputs := plistener.GetAudioInputs() ; For not showing Windows Voice Recognition widget.

plistener.AudioInput := paudioinputs.Item(0)   ; For not showing Windows Voice Recognition widget.

ObjRelease(paudioinputs) ; Release object from memory, it is not needed anymore.

pcontext := plistener.CreateRecoContext()

pgrammar := pcontext.CreateGrammar()

pgrammar.DictationSetState(0)

prules := pgrammar.Rules()

prulec := prules.Add("wordsRule", 0x1|0x20)

prulec.Clear()

pstate := prulec.InitialState()

; Add here the words to be recognized! Looks like it understands the null pointer.
pstate.AddWordTransition( ComObjParameter(13,0) , "Apple") ; ComObjParemeter(13,0) is value Null for AHK_L
pstate.AddWordTransition( ComObjParameter(13,0) , "Banana") ; ComObjParemeter(13,0) is value Null for AHK_L

prules.Commit()

pgrammar.CmdSetRuleState( "wordsRule", 1)

prules.Commit()

ComObjConnect(pcontext, "On")

If (pspeaker && plistener && pcontext && pgrammar && prules && prulec && pstate)
   {	
   pspeaker.speak("Voice recognition initialisation succeeded. Available voice commands:")
   
   MsgBox, Available Voice recognition initialisation succeeded. Available Voice Commands:`nApple`nBanana
   
   }
Else 
{
 pspeaker.speak("Starting voice recognition initialisation failed")
 MsgBox, Starting voice recognition initialisation failed 
}
return

OnRecognition(StreamNum,StreamPos,RecogType,Result)
{
	
 
	  
   Global pspeaker    
 
   Msgbox Command Recognised.

   ; Grab the text we just spoke and go to that subroutine
   
   pphrase := Result.PhraseInfo()
 
   sText := pphrase.GetText()
  
   pspeaker.Speak("You said " sText)
   
   MsgBox, Command is %sText%
   
   voice_command = %sText%
   
      
   ; Send voice command to execute a code block.
 
   
   ; check if it is a Label 
   if(IsLabel(voice_command)) 
      gosub, %voice_command% 

   
   ObjRelease(pphrase) ;release object from memory
   ObjRelease(sText)
   
   }

;;;; Voice command Labels
Apple: 
Msgbox, Command Activated: Apple. It could be a function here, but it doesn't do anything.
Return 

Banana: 
Msgbox, Command Activated: Banana. It could be a function here, but it doesn't do anything.
Return

14

Re: AHK: Анализ звука.

А зачем мучить AutoHotkey? Есть программа "Горыныч", она в точности соответствует требованиям

Kurskador пишет:

Мне нужно чтобы скрипт опознавал и отличал от всего остального, заранее записанные слова, допустим такие как "Ок", "Броузер" и  "Закрыть".

15 (изменено: Kurskador, 2015-11-17 13:27:21)

Re: AHK: Анализ звука.

"Горыныч" - опробованная и очень слабая программа. Процент "угадывания" отвратительный. И у неё совсем другое предназначение.
Я сразу написал, что мне не нужно распознавание слов, как таковое. Мне нужно чтобы скрипт мог отличить несколько слов друг от друга и от других звуков в системе.
Не обязательно понимать и "расшифровать", что я сказал именно "абракадабра", достаточно сравнить с имеющимися ранее записями "стоп" и "кукушка", и отреагировать: "такого слова нет", или "такое слово есть и его номер 5".

Мне кажется, что это гораздо проще чем распознавание речи как таковое.

16

Re: AHK: Анализ звука.

Я сразу написал, что мне не нужно распознавание слов, как таковое. Мне нужно чтобы скрипт мог отличить несколько слов друг от друга и от других звуков в системе.

Противоречие.

Не обязательно понимать и "расшифровать", что я сказал именно "абракадабра", достаточно сравнить с имеющимися ранее записями "стоп" и "кукушка", и отреагировать: "такого слова нет", или "такое слово есть и его номер 5".

"Горыныч" и всё подобные программы именно так и работают.

"Горыныч" - опробованная и очень слабая программа. Процент "угадывания" отвратительный. И у неё совсем другое предназначение.

Я тоже пробовал. Да, программа очень слабая, поэтому она идеально подходит для Ваших целей. Она не грузит систему. Для распознавания требует очень точно повторять слова.
Мне тоже нужно было всего пару-тройку слов и я пошёл по такому пути: каждое слово продиктовал рад двадцать с разной интонацией и громкостью. Число срабатываний при этом поднялось до уровня современных продвинутых программ (то есть 90%).
В AutoHotkey прописал строку автозамены для срабатывания на нужное слово.

17

Re: AHK: Анализ звука.

Мне и 100 не хватило, не то что 20.

18

Re: AHK: Анализ звука.

Malcev, всё равно все "null"

19

Re: AHK: Анализ звука.

Нижеследующее перенёс из темы AHK: Распознавание лиц (Face detection) с UWP API (Win10) по просьбе автора.

20

Re: AHK: Анализ звука.

Блин, у меня тоже "нулями", с этих примеров не доходит.
Есть наработки - нажал - сказал в микрофон - отпустил - msgbox с текстом.

По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru
Win10x64, AutoHotkey_L v1.1.32.00 (Unicode 32-bit). AhkSpy, Hotkey, ClockGui

21

Re: AHK: Анализ звука.

Да. У меня всё работает на Win10 и на русском языке и на английском.
http://forum.script-coding.com/viewtopi … 109#p99109
Для русского я проинсталировал speech platform и язык.
И заменил sapi объект на speech.
http://forum.script-coding.com/viewtopi … 69#p105469

22

Re: AHK: Анализ звука.

На семёрке не удалось заставить работать.

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Skype dmitry_fiveg

23

Re: AHK: Анализ звука.

У меня и на семерке работало.
Но сейчас уже проверить не скоро смогу.

24

Re: AHK: Анализ звука.

Поставил SpeechPlatformRuntime.msi и MSSpeech_SR_ru-RU_TELE.msi — никаких изменений.

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Skype dmitry_fiveg

25

Re: AHK: Анализ звука.

То есть, у тебя не работает ни на русском ни на английском?

26 (изменено: teadrinker, 2020-02-24 22:37:21)

Re: AHK: Анализ звука.

Ага, и в панели задач "распознавание речи Windows не поддерживается для данного языка". Где-то прочёл, если на английский интерфейс перестроить, будет работать.

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Skype dmitry_fiveg

27

Re: AHK: Анализ звука.

Ну не знаю тогда.
Я только что поменял локаль на Win-10 на русскую и английский у меня через sapi распознает.

28

Re: AHK: Анализ звука.

Тут, похоже, в языке интерфейса дело, у тебя ведь английский, наверно.

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Skype dmitry_fiveg

29

Re: AHK: Анализ звука.

Нет, я поставил русский.

30

Re: AHK: Анализ звука.

Ну, может на win10 это работает.

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Skype dmitry_fiveg

31

Re: AHK: Анализ звука.

А что показывает этот код?

Voice := ComObjCreate("SPEECH.SpVoice")
Voice.Speak("На русcком языке этот модуль может говорить и на windows 7.")
msgbox % A_LastError

32

Re: AHK: Анализ звука.

Этот работает без ошибок.

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Skype dmitry_fiveg

33

Re: AHK: Анализ звука.

Ну а этот на "мама" не реагирует?

#Persistent
#SingleInstance
; For voice recognition to work you need Microsoft SAPI installed in your PC, some versions of Windows don't support voice recognition though.
; You may also need to train voice recognition in Windows so that it will understand your voice.

MsgBox, Please wait until voice recognition is activated. You will be notified when that happens. Press OK to continue.

pspeaker := ComObjCreate("speech.SpVoice")

;plistener := ComObjCreate("speech.SpSharedRecognizer") 

plistener:= ComObjCreate("speech.SpInprocRecognizer") ; For not showing Windows Voice Recognition widget.


paudioinputs := plistener.GetAudioInputs() ; For not showing Windows Voice Recognition widget.

plistener.AudioInput := paudioinputs.Item(0)   ; For not showing Windows Voice Recognition widget.

ObjRelease(paudioinputs) ; Release object from memory, it is not needed anymore.

pcontext := plistener.CreateRecoContext()

pgrammar := pcontext.CreateGrammar()

pgrammar.DictationSetState(0)

prules := pgrammar.Rules()

prulec := prules.Add("wordsRule", 0x1|0x20)

prulec.Clear()

pstate := prulec.InitialState()

; Add here the words to be recognized! Looks like it understands the null pointer.
pstate.AddWordTransition( ComObjParameter(13,0) , "мама") ; ComObjParemeter(13,0) is value Null for AHK_L
pstate.AddWordTransition( ComObjParameter(13,0) , "Banana") ; ComObjParemeter(13,0) is value Null for AHK_L

prules.Commit()

pgrammar.CmdSetRuleState( "wordsRule", 1)

prules.Commit()

ComObjConnect(pcontext, "On")

If (pspeaker && plistener && pcontext && pgrammar && prules && prulec && pstate)
   {	
   pspeaker.speak("Voice recognition initialisation succeeded. Available voice commands:")
   
   MsgBox, Available Voice recognition initialisation succeeded. Available Voice Commands:`nмама
   
   }
Else 
{
 pspeaker.speak("Starting voice recognition initialisation failed")
 MsgBox, Starting voice recognition initialisation failed 
}
return

OnRecognition(StreamNum,StreamPos,RecogType,Result)
{
	
 
	  
   Global pspeaker    
 
   Msgbox Command Recognised.

   ; Grab the text we just spoke and go to that subroutine
   
   pphrase := Result.PhraseInfo()
 
   sText := pphrase.GetText()
  
   pspeaker.Speak("You said " sText)
   
   MsgBox, Command is %sText%
   
   voice_command = %sText%
   
      
   ; Send voice command to execute a code block.
 
   
   ; check if it is a Label 
   if(IsLabel(voice_command)) 
      gosub, %voice_command% 

   
   ObjRelease(pphrase) ;release object from memory
   ObjRelease(sText)
   
   }

;;;; Voice command Labels
мама: 
Msgbox, Command Activated: мама. It could be a function here, but it doesn't do anything.
Return 

Banana: 
Msgbox, Command Activated: Banana. It could be a function here, but it doesn't do anything.
Return

34

Re: AHK: Анализ звука.

Завтра уже посмотрю, ушёл.

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Skype dmitry_fiveg

35

Re: AHK: Анализ звука.

Заработало!

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Skype dmitry_fiveg

36

Re: AHK: Анализ звука.

А в чём там проблема была?

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Skype dmitry_fiveg

37

Re: AHK: Анализ звука.

Нашёл эту тему. Интересно, что у меня не возникает пока проблем, которые там описаны (реакция сразу на первое слово). Хорошо реагирует на «открой мои документы» и вместе с тем на «открой загрузки».

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Skype dmitry_fiveg

38

Re: AHK: Анализ звука.

Нет, рано обрадовался. Реагирует также на просто «мои документы» и на просто «загрузки».

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Skype dmitry_fiveg

39 (изменено: Malcev, 2020-02-25 21:28:11)

Re: AHK: Анализ звука.

teadrinker пишет:

А в чём там проблема была?

Наверное в этом:
https://docs.microsoft.com/en-us/previo … v=msdn.10)

40

Re: AHK: Анализ звука.

А от гугла нет какого софта, оно же на любом телефоне отлично работает

По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru
Win10x64, AutoHotkey_L v1.1.32.00 (Unicode 32-bit). AhkSpy, Hotkey, ClockGui

41

Re: AHK: Анализ звука.

А зачем? Чем не устраивает SAPI?

42

Re: AHK: Анализ звука.

Не встречал рабочего варианта, teadrinker в 32 пишет про проблемы распознавания.

По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru
Win10x64, AutoHotkey_L v1.1.32.00 (Unicode 32-bit). AhkSpy, Hotkey, ClockGui

43 (изменено: Malcev, 2020-02-25 22:11:43)

Re: AHK: Анализ звука.

То есть.
1) Ты установил Microsoft Speech Platform - Runtime (2.5 Mb)
https://www.microsoft.com/en-us/downloa … x?id=27225
2) Установил русский голосовой движок Elena (файл MSSpeech_TTS_ru-RU_Elena.msi - 6 Mb).
http://www.microsoft.com/en-us/download … x?id=27224
3) Запустил код из 27 поста и сказал ""мама"
В итоге скрипт не среагировал?

44 (изменено: Malcev, 2020-02-25 22:24:44)

Re: AHK: Анализ звука.

На счет "проблем распознавания", то надо создавать GrammarBuilder.
https://docs.microsoft.com/en-us/previo … office.14)
Я в этом не разбирался, поэтому подсказать не смогу.
Если на автохотки не найдешь, а с C# переносить не хочется, то есть на автоит:
https://github.com/thesunRider/Utter

45

Re: AHK: Анализ звука.

Поставил.

На анк х32

Error:  0x80040154 - Класс не зарегистрирован
---> 008: pspeaker := ComObjCreate("speech.SpVoice")

На анк х64

Error:  0x8000FFFF - Разрушительный сбой
---> 027: prules := pgrammar.Rules()

По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru
Win10x64, AutoHotkey_L v1.1.32.00 (Unicode 32-bit). AhkSpy, Hotkey, ClockGui

46

Re: AHK: Анализ звука.

Еще надо MSSpeech_SR_ru-RU_TELE.msi для распознавания установить.

47

Re: AHK: Анализ звука.

Тоже самое.

По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru
Win10x64, AutoHotkey_L v1.1.32.00 (Unicode 32-bit). AhkSpy, Hotkey, ClockGui

48

Re: AHK: Анализ звука.

Microsoft Speech Platform - Runtime x64 установил?

49

Re: AHK: Анализ звука.

Да, потом Х86.

По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru
Win10x64, AutoHotkey_L v1.1.32.00 (Unicode 32-bit). AhkSpy, Hotkey, ClockGui

50

Re: AHK: Анализ звука.

Попробуй вместо этого

pspeaker := ComObjCreate("SAPI.SpVoice")
Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Skype dmitry_fiveg

51

Re: AHK: Анализ звука.

Не, это не поможет. Это немного другой объект и русский не поддерживает.
Тебе нужно откатиться до появления этой ошибки, после чего все эти 3 компонента установить заново.
Так как после ее появления, простая деинсталяция не помогает.

52

Re: AHK: Анализ звука.

У меня такая ошибка возникла после переустановки какого-то из компонентов, по-моему, после того, как я деинсталлировал и установил другой русскоязычный голосовой движок. Я не стал разбираться, а попробовал вариант с SAPI — у меня работает, по-русски говорит.

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Skype dmitry_fiveg

53

Re: AHK: Анализ звука.

Не, у меня не такая ошибка, 0x8004503A.

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Skype dmitry_fiveg

54

Re: AHK: Анализ звука.

teadrinker пишет:

попробовал вариант с SAPI — у меня работает, по-русски говорит.

Но не распознает же. А мы же про распознование говорим.
И говорит он только при русском интерфейсе.

55

Re: AHK: Анализ звука.

Так я только про спикер говорил. Ошибка-то при создании спикера пока что была.

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Skype dmitry_fiveg

56

Re: AHK: Анализ звука.

Нет, при создании спикера, первая.
Потому что у него не установлена была x86 Microsoft Speech Platform.
А вторая ошибка, касается модуля распознавания.

57

Re: AHK: Анализ звука.

У меня тоже такой же вопрос - как скриптом ahk среагировать на конкретный звук (не на слова, а на звук) ?

Допустим если проигрывается звук tada.wav - чтобы скрипт на него реагировал.

58

Re: AHK: Анализ звука.

Готовых вариантов нету.
Надо изучать алгоритмы фингерпринта.
Тут обсуждали:
http://forum.script-coding.com/viewtopic.php?id=14705

59

Re: AHK: Анализ звука.

Здесь вроде пытались: https://www.autohotkey.com/boards/viewt … lit=VA.ahk.

60

Re: AHK: Анализ звука.

Нет, это совсем не то.
Можно пробовать через эту утилиту распознавать:
https://www.3delite.hu/Object%20Pascal% … brary.html