1 (изменено: takem94, 2013-02-09 20:24:51)

Тема: AHK: Голосовая активация клавиши

Нужен скрипт который следил бы за микрофоном и при срабатывание(то есть изменения шкалы) нажимал клавишу "F9".Это нужно для записи видео без моментов где я молчу.Точнее когда я говорю скрипт срабатывает и нажимает клавишу, и когда я заканчиваю говорить клавиша еше раз нажимается чтоб поставить видео на пазу.
Вот пример такого скрипта:http://www.autohotkey.com/board/topic/8 … microphone
Но в этом скрипте при разговоре начинается запись звука,нужно это поменять на нажатие клавиши.
Кто сможет написать такой скрипт и сколько это будет стоить?

2 (изменено: creature.ws, 2013-02-10 20:39:06)

Re: AHK: Голосовая активация клавиши

#Persistent
OnExit, Exit

silent := 0
maxSilentDuration := 1000
timer := 100

if MicrophoneOpen()
    throw Exception("Could not open microphone")

SetTimer CheckMicrophoneLevel, % timer
return

CheckMicrophoneLevel:
    if MicrophoneLevel() > silent {
        Send {F9}

        loop {
            Sleep timer

            if MicrophoneLevel() > silent {
                silentDuration := 0
                continue
            }

            silentDuration += timer
        }
        until silentDuration >= maxSilentDuration

        Send {F9}
    }
    return

Exit:
    MicrophoneClose()
    ExitApp

MicrophoneLevel() {
    VarSetCapacity(value, 32, 0)
    if MCISendString("status ScriptMicrophone level", &value, 16)
        return false
    return StrGet(&value, 16) - 1
}

MicrophoneOpen() {
    return MCISendString("open new alias ScriptMicrophone type waveaudio wait")
}

MicrophoneClose() {
    return MCISendString("close ScriptMicrophone wait")
}

MCISendString(ByRef command, returnString := 0, bufSize := 0, hwndCallback := 0) {
    return DllCall("winmm\mciSendString", "Str", command , "UPtr", returnString, "UInt", bufSize, "UPtr", hwndCallback)
}

сколько это будет стоить

330, каждому.

3 (изменено: creature.ws, 2013-02-10 17:18:19)

Re: AHK: Голосовая активация клавиши

Это же форум, незачем на почту писать.
Переменная silent определяет значение уровня «тишины», увеличивая число в этой переменной вы повышаете «порог срабатывания».

Код, приведенный ниже, отображает во всплывающем окне текущий «уровень» микрофона, запустите, оцените визуально (по отображаемому в окне числу) насколько высок уровень шума в помещении, установите значение переменной silent в коде из сообщения #2 выше порогового «значения тишины» для вашего микрофона и помещения, сохраните отредактированный код из сообщения #2.

OnExit, Exit
MicrophoneOpen()

loop {
    Tooltip % MicrophoneLevel()
    Sleep 40
}

Exit:
    MicrophoneClose()
    ExitApp

MicrophoneLevel() {
    VarSetCapacity(value, 32, 0)
    if MCISendString("status ScriptMicrophone level", &value, 16)
        return false
    return StrGet(&value, 16) - 1
}

MicrophoneOpen() {
    return MCISendString("open new alias ScriptMicrophone type waveaudio wait")
}

MicrophoneClose() {
    return MCISendString("close ScriptMicrophone wait")
}

MCISendString(ByRef command, returnString := 0, bufSize := 0, hwndCallback := 0) {
    return DllCall("winmm\mciSendString", "Str", command , "UPtr", returnString, "UInt", bufSize, "UPtr", hwndCallback)
}

4

Re: AHK: Голосовая активация клавиши

А что нужно изменять если на x86 системе xp\7 не работает?

Win 10 x64
AHK v1.1.33.02
                       Справка тебе в помощь.

5 (изменено: creature.ws, 2013-02-10 17:31:03)

Re: AHK: Голосовая активация клавиши

Код к x64 не привязан. Не работать нечему.

Посмотрите, что возвращает MCISendString("status ScriptMicrophone level", &value, 16) в MicrophoneLevel().
Уточните, что значит «не работает».

6 (изменено: Alectric, 2013-02-10 17:44:07)

Re: AHK: Голосовая активация клавиши

Error at line 29.

Line Text: MCISendString(ByRef command, returnString := 0, bufSize := 0, hwndCallback := 0)
Error: Missing comma

The program will exit.
Win 10 x64
AHK v1.1.33.02
                       Справка тебе в помощь.

7

Re: AHK: Голосовая активация клавиши

Проблема вся в том что когда я начинаю говорить,скрипт начинает без остановки нажимать заданную клавишу и из-за этого пауза то снимается,то ставится и в видео все глючит.По этому нужно четка ограничить количество нажатий до 2-ух,а то при 3-ех нажатиях запись с паузы слетает.

8

Re: AHK: Голосовая активация клавиши

Нужно ввести задержку на определение "тишины".

Win 10 x64
AHK v1.1.33.02
                       Справка тебе в помощь.

9 (изменено: creature.ws, 2013-02-10 18:00:55)

Re: AHK: Голосовая активация клавиши

Error at line 29.

Используйте актуальную версию autohotkey.

Проблема вся в том что когда я…

Начав говорить, сохраняйте один уровень громкости, не допускайте пауз

Найдите в коде строку Sleep 20, измените её на Sleep 1000
После этого изменения, запись, включенная отправкой нажатия F9, будет приостановлена повторным нажатием F9 если через 1 секунду после начала записи, уровень сигнала, снимаемого с микрофона, будет ниже установленного уровня «тишины».

10

Re: AHK: Голосовая активация клавиши

Заработало когда поставил 750 в sleep.Спасибо большое за Вашу помощь!

11

Re: AHK: Голосовая активация клавиши

Оно с самого начала «работало», теперь — работает «как вам нужно»

12

Re: AHK: Голосовая активация клавиши

А я понял sleep это задержка,и её надо ставить на 2000.Тогда не пропадают слова.

13 (изменено: creature.ws, 2013-02-10 19:50:31)

Re: AHK: Голосовая активация клавиши

Правильнее так:

#Persistent
OnExit, Exit

silent := 0
maxSilentDuration := 1000
timer := 100

if MicrophoneOpen()
    throw Exception("Could not open microphone")

SetTimer CheckMicrophoneLevel, % timer
return

CheckMicrophoneLevel:
    if MicrophoneLevel() > silent {
        Send {F9}

        loop {
            Sleep timer

            if MicrophoneLevel() > silent {
                silentDuration := 0
                continue
            }

            silentDuration += timer
        }
        until silentDuration >= maxSilentDuration

        Send {F9}
    }
    return

Exit:
    MicrophoneClose()
    ExitApp

MicrophoneLevel() {
    VarSetCapacity(value, 32, 0)
    if MCISendString("status ScriptMicrophone level", &value, 16)
        return false
    return StrGet(&value, 16) - 1
}

MicrophoneOpen() {
    return MCISendString("open new alias ScriptMicrophone type waveaudio wait")
}

MicrophoneClose() {
    return MCISendString("close ScriptMicrophone wait")
}

MCISendString(ByRef command, returnString := 0, bufSize := 0, hwndCallback := 0) {
    return DllCall("winmm\mciSendString", "Str", command , "UPtr", returnString, "UInt", bufSize, "UPtr", hwndCallback)
}

Подразумевается, что между словами в фразе бывает не более секунды тишины.
Пауза задаётся переменной maxSilentDuration