|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
05.02.2015, 08:30 | #1 |
Пользователь
Регистрация: 03.01.2009
Сообщений: 22
|
WAVEHDR.lpData и поиск точки записи голоса
Приветствую, дамы и господа.
Начну сразу с того, что в одной своей софтине необходимо добавить некое подобие "телефона". Ну не совсем "телефона", просто нужно записать фразу из входящего из микрофона потока и отправить уже на софтину на другом компьютере другого пользователя. Это как-бы вкратце сие действо. Сама же суть проблемы вот в чем: есть входящий поток (грубо говоря) WAVEHDR.lpData с него я беру т.н. "коэффициент" (можно сказать, что это некий "уровень" входящего сигнала) в текущий момент времени (с задержкой, конечно; особая точность в том виде, которая необходима софтине - и не требуется) и управляюсь с ним. Прилагаю исходник на гитхабе (думаю, это куда удобнее, чем тут постить пару сотен строк). В данном исходнике (до вставки в основной код софтины, я пока решил поэкспериментировать в чистой среде, поэтому в них ничего кроме сабжа, собсно, и нету) при старте программы сразу инициализируется запись в буфер звука. Во время записи на экран выводится этот т.н. "коэффициент", просто для наглядности процесса. Сама запись голоса (второстепенная запись) тут отсутствует и требуется просто понять начальную и конечную точку записи, а в последствии уже в основном коде она реализуется. В данном случае выводящиеся значения "Recording << " и "Stop Recording >> " неверны, потому что как таковой нет основной мысли и специфики как это реализовать. Так же в коде есть некоторые закомментированные строки - это остатки от бывших проб и вариаций. В основном - в таком виде работает вроде все верно, только загвоздка с получением момента начала и конца (второстепенной) записи уже голоса. (Кстати, в коде, есть некоторое количество мусора и быдлокода, я его не убирал и не переписывал пока потому, что это как-бы не финальный вариант и прошлые задумки могут помочь) Я понимаю, что будут предложения реализовать это через две кнопочки "Записать"/"Остановить и отправить", или через горячие клавиши, или начинать запись в выявленного момента (коэфф>500, к примеру) и записывать ровно две/три/пять/десять/тридцать_три секунды. Это, конечно, вариант, но не для этого случая. Не хочется загромождать форму лишними кнопками. А последний вариант не нравится потому что я могу говорить в микрофон и одно слово и двадцать одно, и в таком виде мне потребуется уложиться за эти несколько секунд - что не есть хорошо. Собственно, суть описана: проблема в поиске этих точек. Кто-нибудь с таким сталкивался или у кого-нибудь есть идея, пусть даже гипотетическая, как это можно было бы провернуть (а реализовать всегда можно)? Или может быть кто-нибудь предложит более разумный вариант проверки и записи, чем текущий - буду безмерно благодарен. Ежели кто сразу на гитхабе захочет внести изменения - не стесняйтесь, возможно общими усилиями сможем даже создать какую-нибудь библиотечку и выпустить в народ, возможно кому-нибудь понадобиться такой функционал. Последний раз редактировалось EaRLL; 05.02.2015 в 08:36. |
05.02.2015, 09:29 | #2 |
Старожил
Регистрация: 13.07.2012
Сообщений: 6,342
|
Я правильно понял, что вам надо различить где в записи говорят а где молчат?
|
05.02.2015, 10:41 | #3 | |
Пользователь
Регистрация: 03.01.2009
Сообщений: 22
|
Цитата:
Но ещё есть дополнение: если, к примеру, запись проводить из ноутбука через его микрофоны встроенные, то там уже изначально будет малая доля шума. Сколько я не мониторил, "коэфф." бьется от 100 до 300, но пробуя мониторить уже речь, столкнулся с тем, что нижний порог голоса может быть и в районе 200 и даже 100. Так что проверять и включать запись только тогда, когда он будет >300 я не могу, т.к. он может и не сработать на обычный голос. Загвоздка, как я уже сказал, может даже состоять не в том, что бы выхватить начальную точку, а найти конечную. Последний раз редактировалось EaRLL; 05.02.2015 в 10:54. |
|
05.02.2015, 12:05 | #4 |
Старожил
Регистрация: 13.07.2012
Сообщений: 6,342
|
Может это?
http://habrahabr.ru/post/226143/ |
05.02.2015, 12:33 | #5 | |
Пользователь
Регистрация: 03.01.2009
Сообщений: 22
|
Цитата:
|
|
05.02.2015, 13:47 | #6 |
Старожил
Регистрация: 13.07.2012
Сообщений: 6,342
|
там так же шла речь о тишине, что собственно и надо...
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Поиск всех путей в лабиринте от точки до точки | pavel_abelardo | Помощь студентам | 12 | 26.06.2011 00:23 |
Поиск принадлежности точки области | CrazyN00b | Win Api | 3 | 13.04.2010 00:19 |
Поиск седловой точки матрицы (C) | ya chef | Помощь студентам | 11 | 22.11.2009 19:24 |
поиск седловой точки | vasd | Общие вопросы Delphi | 1 | 14.05.2009 22:04 |
Поиск точки (х;у) | Slavik | Microsoft Office Excel | 4 | 01.05.2009 10:48 |