C++ Builder
| Главная | Уроки | Статьи | FAQ | Форум | Downloads | Литература | Ссылки | RXLib | Диски |

 
Запись аудио в C++ Builder, Как записать аудио сигнал без лакун
** Anton.S
  Отправлено: 28.10.2003, 09:16


Не зарегистрирован







Всем привет.

Задача следующая.
Имеется аудио сигнал, поступающий с телефонной линии.

Необходимо вести запись разговоров в отдельные файлы. Т.е. был звонок в 10:00 записали один файл, был звонок в 10:15 записали следующий файл и т.д. ( это не шпионские штучки cool.gif , это нужно для протоколирования разговоров диспетчера скорой помощи )

Вопросы:
1) Может кто знает программы для такой задачи ? Где их взять ? Как установить из программы на C++ Builder в какой файл записывается разговор ?

2) Может быть кто видел компоненты С++ Builder пригодные для этой задачи ? Если да, то где, как их использовать ?

3) Как отслеживать аудио сигнал на входе ? Сигнал появился — пошла запись нового файла, сигнал пропал — запись закончили ?

4) Как вообще добраться до аудио сигнала ?

--
Спасибо, если хотя бы задумались.

Infant
Отправлено: 03.11.2003, 20:29


Ученик-кочегар

Группа: Участник
Сообщений: 6



Рад, что есть единомышленики. Я пишу похожую прогу.
Использую не модем, а звуковую карту и самодельный дивайс, который подает сиглал о снятии трубки на COM-порт, а на звуковуху, через гальваническую развязку записывается разговор в БД. При этом, как понимаешь, можно обеспечить конфиденциальность переговоров, осуществлять поиск и учет.
Anton.S
Отправлено: 04.11.2003, 07:46


Ученик-кочегар

Группа: Участник
Сообщений: 7



А на чем пишеш ?
Какой компонент пользуешь ?
Зачем нужен самодельный девайс, почему не проанализировать аудиосигнал на "тишину" ?
--
Я вообще-то не Любопытный... фамилия такая
smile.gif
Infant
Отправлено: 04.11.2003, 09:03


Ученик-кочегар

Группа: Участник
Сообщений: 6



>А на чем пишеш ?
Borland Builder C++
>Какой компонент пользуешь ?
для воспроизведения и записи MediaPlayer, а в общем
пока все из стандатртные.
>Зачем нужен самодельный девайс, почему не проанализировать>аудиосигнал на "тишину" ?
Ну, а как ты будешь определять это пауза в разговоре или положена трубка.
Если использовать модем, то необходимо, чтобы всегда была "поднята трубка" модема, а в этом случае ты не сможешь пользоваться телефонной линией.
Вот так.
Anton.S
Отправлено: 05.11.2003, 09:47


Ученик-кочегар

Группа: Участник
Сообщений: 7



QUOTE (Infant @ 04/11/2003, 10:05)
Ну, а как ты будешь определять это пауза в разговоре или положена трубка.
Если использовать модем, то необходимо, чтобы всегда была "поднята трубка" модема, а в этом случае ты не сможешь пользоваться телефонной линией.

Пауза в разговоре отличается от состояния "трубка положена", как небо и земля. Белый шум в момент паузы значительно превосходит шумы состояния "трубка положена" (проверял осциллографом).

С модемом не очень понял зачем нужно, что бы трубка была всегда поднята, но это не принципиально. Модема нет и по условиям быть не должно. У меня три входных тел. линии заводят на два рабочих места. Не буду же я цеплять 6 модемов.

Жаль что Ты работаешь с MediaPlayer. Им, конечно, не определить состояние аудио сигнала.

Может кто знает, могу ли я при помощи DirectSound получить мгновенную выборку аудиосигнала ?
** Infant
Отправлено: 05.11.2003, 22:08


Не зарегистрирован







Во-первых, если у тебя 2 рабочих места и 3 вх линии (итого контроль над 3-мя линиями, то в моем варианте нужны 2 звуковые карты.
Определить с какого рабочего места был произведен разговор можно и по голосу, или подавать управляющий сигнал на комп.
Гальваническая развязка в любом случае необходима, а если так, то что тебе стоит путем добавления одного герконового реле и подачей сигнала на СОМ-порт анализивовать 1 или О (как известно, при снятии трубки напряжение падает).
Я считаю что все нужно делать как можно проще.
Ну, а если совсем отказаться от СОМ-порта, то можно в ждущем режиме телефонной линии с помощью того же реле подавать на вход звуковухи напряжение определенного уровня, например +1В, и нужно будет анализировать не белый шум, а всего лишь наличие этого напряжения.

Вернуться в Вопросы программирования в C++Builder