Из Википедии, бесплатной энциклопедии
  (Перенаправлено с голосового модема )
Перейти к навигации Перейти к поиску

Голосовой модем представляет собой аналоговый телефон данных модем со встроенным в возможности передачи и приема голосовых записей по телефонной линии. Голосовые модемы используются для приложений телефонии и автоответчика . Подобно набору команд Hayes, используемому для модемов данных, в котором главный компьютер управляет модемом с помощью серии команд, известных как AT-команды , существует четко определенный набор общих голосовых AT-команд, которые в некоторой степени согласованы во всей отрасли.

Проблемы реализации [ править ]

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

  • Надежная работа. Многие модемы просто «блокируют» или приводят к аварийному завершению работы хост-компьютера, хотя это чаще встречается в Winmodems . У других есть ошибки управления потоком и другие ошибки реализации, которые могут приводить к зависанию вызовов, пропуску звука или продолжению воспроизведения звука после попытки прерывания.
  • Хорошие звуковые характеристики. Некоторые модемы имеют недопустимо низкий уровень громкости сигнала или создают звуковой шум. Некоторые модемы не могут распознавать все сигналы DTMF, кроме лучших . Некоторые модемы плохо справляются с записью, обнаружением и сообщением о тишине или изменением напряжения в конце вызова, что необходимо некоторым приложениям.
  • При необходимости поддержка идентификатора вызывающего абонента . «Идентификатор вызывающего абонента типа 1», используемый в Северной Америке, отсутствует в подавляющем большинстве модемов. Почти все модемные наборы микросхем поддерживают идентификатор вызывающего абонента, но поскольку типичному пользователю Интернета с коммутируемым доступом не требуется идентификатор вызывающего абонента, дополнительные компоненты, необходимые для поддержки идентификатора вызывающего абонента, часто не используются по причинам стоимости.
  • Поддержка нескольких экземпляров. Драйверы для многих внутренних модемов (обычно Winmodems) не могут поддерживать более одного и того же устройства внутри одного компьютера. Симптомы несовместимости включают сбои, синие экраны смерти или простую неработоспособность всего, кроме одного модема. Внешние (последовательные) модемы на основе RS-232 не имеют этого ограничения, потому что каждый модем содержит свой собственный микропроцессор и не знает о других модемах на том же хосте. USB модемы могут иметь или не иметь эту проблему, потому что некоторые USB-модемы представляют собой просто последовательные модемы с набором микросхем преобразователя «USB-последовательный» (в этом случае проблем быть не должно), а другие USB-модемы «управляются хостом» и по сути, являются внешне прикрепленными Winmodems (в этом случае проблема может не исчезнуть).

Плюс против хеша [ править ]

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

Обнаружение голосового режима [ править ]

Поддержка голосового режима может быть обнаружена на модеме с помощью следующей команды: AT + FCLASS =?

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

Модем, поддерживающий голос, ответит списком номеров с разделителями-запятыми, который включает число 8. Модем, не поддерживающий голос, ответит ОШИБКОЙ или списком номеров, не включая 8. (Многие модемы сообщают 0,1,2 указывает на поддержку данных (0) и факсов классов 1 и 2 - это означает, что голосовая поддержка отсутствует.)

Модемы, поддерживающие набор команд "hash", обычно отвечают на AT # CLS =? также.

Вход в голосовой режим [ править ]

Команда AT + FCLASS = 8 или AT # CLS = 8 переведет модем в голосовой режим. Большинство модемов по-прежнему остаются положенными и отвечают OK . Как только эта команда будет принята, большинство модемов ответят сообщениями Data Link Escape (DLE) вместо обычных ответов модема или в дополнение к ним. Например, вместо того, чтобы сообщать о звонке телефонной линии с помощью сообщения RING , многие модемы вместо этого отправляют символ DLE ASCII , за которым следует буква R. Конкретный набор событий DLE, сообщаемых каждым модемом, зависит от его набора микросхем и задокументирован в его справочное руководство.

Запрос возможностей модема [ править ]

Команда AT + VLS =? или AT # VLS =? обычно возвращает список режимов работы, характерных для каждого модема. Каждый из этих пронумерованных режимов определяет состояние телефонной линии "трубка снята" или "трубка снята", а также маршрутизация звука между каждым из следующего:

  • Запись / воспроизведение
  • Телефонная трубка
  • Гнездо для громкой связи (которое может быть просто подключено к аудиовходу на звуковой карте ПК вместо дискретного разъема)
  • Гнездо для микрофона (доступно на некоторых голосовых модемах)

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

Пример ответа на AT + VLS =? из модема, представленного на рынке в 2006 году:

AT + VLS =? 0, "", 0000000000,0000000000, B084008000 1, "Т", 0B8418E000,0FE418E000,0B8419E000 2, "L", 0884008000,0CE4008000,0884018000 3, "LT", 0B8418E000,0FE418E000,0B8419E000 4, "S", 0084008000,0484008000,3084018000 5, «СТ», 0B8418E000,0FE418E000,0B8419E000 6, «М», 0084008000,04E4008000,3084008000 7, «МСТ», 0B8418E000,0FE418E000,0B8419E000 8, «S1», 0084008000,0484008000,3084018000 9, "S1T", 0B8418E000,0FE418E000,0B8419E000 10, "МС1Т", 0B8418E000,0FE418E000,0B8419E000 11, «М1», 0084008000,04E4008000,3084008000 13, «М1С1Т», 0B8418E000,0FE418E000,0B8419E000 14, "H", 0084008000,04E4008000,3084018000 15, "HT", 0B8418E000,0FE418E000,0B8419E000 16, «МС», 0084008000,04E4008000,3084018000 17, «МС1», 0084008000,04E4008000,3084018000 19, «М1С1», 0084008000,04E4008000,3084018000 20, "т", 0B8418E000,0FE418E000, BB8419E000

Хотя все модемы разные, обычно режим 0 означает положенную трубку (повешение), а режима 1 достаточно, чтобы поднять трубку, записать / воспроизвести звук и обнаружить DTMF ( тональные сигналы).

Команда AT + VSM =? или AT # VSM =? обычно возвращает список форматов аудиоданных, поддерживаемых модемом. Каждый формат включает имя (например, PCM , ADPCM , μ-закон , A-закон ), количество бит на выборку (обычно 2, 3, 4, 8 или 16) и частоту дискретизации звука (обычно 7200, 8000). , или 11025 Гц ). Это стандартные аудиокодеки , реализация которых хорошо опубликована. Стандарт ADPCM является исключением. Модемы, утверждающие, что поддерживают ADPCM, почти всегда поддерживают Dialogic ADPCM , также известный как "VOX", который похож, но не совместим с другими реализациями ADPCM, включаяInteractive Multimedia Association (IMA) ADPCM, а также MS ADPCM (реализация Microsoft, используемая в файлах WAV ). Модемы также могут поддерживать их, если указан квалификатор - в противном случае по умолчанию ADPCM означает Dialogic.

Пример ответа на AT + VSM =? из модема, представленного на рынке в 2006 году:

AT + VSM =? 1, «НЕПОДПИСАННЫЙ ПКМ», 8,0,8000,0,0 129, «IMA ADPCM», 4,0,8000,0,0 130, «НЕПОДПИСАННЫЙ ПКМ», 8,0,8000,0,0 140, «2-битный ADPCM», 2,0,8000, 141, «4-битный ADPCM», 4,0,8000,0,0

Желаемый формат аудиоданных выбирается с помощью той же команды, но с числом вместо вопросительного знака. Он используется как для отправки, так и для получения.

Ответ на звонки [ править ]

Ответ на вызовы обычно осуществляется с помощью команд AT + VLS = n или AT # VLS = n , где n - число, представляющее режим модема. Для подавляющего большинства модемов это число будет 1, чтобы ответить на телефонный звонок, и 0, чтобы положить трубку; другие номера активируют другие функции, если они есть, например громкую связь. Некоторые модемы отвечают в ответ на ATA - стандартную команду ответа режима данных, - но другие модемы интерпретируют это как команду для фактического ответа в режиме данных, а не в голосовом режиме.

Передача аудиоданных [ править ]

Чтобы начать передачу аудиоданных, хост отправляет команду AT + VTX или AT # VTX . Это приводит к ответу модема CONNECT или VCON . (Модемы, использующие набор команд «плюс», обычно отвечают на CONNECT, тогда как те, которые используют набор «хешей», отвечают на VCON, что означает голосовое соединение.)

С этого момента модем интерпретирует любые данные, отправленные с компьютера, как волновые аудиоданные, используя кодек, выбранный командой AT + VSM или AT # VSM.

Аудиоданные всегда отправляются на модем немного быстрее, чем он может их воспроизвести, поэтому модем может буферизовать небольшую их часть и воспроизводить ее плавно, без щелчков или хлопков, вызванных задержками в операционной системе компьютера. Например, во время воспроизведения аудиофайла 8 кГц с 8-битным разрешением (что создает 8000 байтов или 80 000 бит, включая стартовые / стоповые биты, в секунду), данные должны проходить через последовательный порт как минимум 115 200 бит. в секунду. (115200 бита / с является первой настройкой последовательного порта типичного компьютера , который больше , чем 80,000.) Кроме того, из - за некоторые дополнительные накладные расходами в удвоении DLE байт в потоке (указанный ниже), небольшое количество дополнительной полосы пропускания является обязательным чтобы учесть это.

Когда модем хочет, чтобы компьютер временно приостановил воспроизведение, чтобы воспроизведение могло наверстать упущенное, он временно снижает сигнал CTS (Clear to Send) на последовательном порту RS-232. Модем повторно подает сигнал вовремя, чтобы компьютер возобновил отправку аудиоданных до того, как буфер воспроизведения станет полностью пустым.

Когда компьютер хочет сигнализировать об окончании аудиоданных, большинство модемов ожидают увидеть символ ASCII DLE (0x10), за которым следует! персонаж.

Поскольку байт DLE может встречаться и часто встречается в обычных аудиоданных, он должен быть дважды отправлен в модем, когда он должен интерпретироваться как байт аудиоданных.

Большинство модемов также принимают последовательность DLE + CAN (отмена) в качестве сигнала для отмены воспроизведения звука. Различие в том, что модем должен понимать, что он должен немедленно прервать воспроизведение, а не позволить оставшимся данным в буфере воспроизведения работать до завершения.

Когда модем завершает воспроизведение, он отвечает ОК .

Регулировка воспроизведения [ править ]

Во время воспроизведения необходимо отправлять аудиоданные с такой скоростью, чтобы звук воспроизводился плавно, но не отправляя его быстрее, чем модем может его обработать. Также желательно убедиться, что модем всегда может прервать воспроизведение и отбросить любой буферизованный звук в случае, если сообщение должно быть отменено. Отмена сообщения ожидается от вызывающих абонентов, которые уже знают ответы на голосовые подсказки и дадут свой ответ раньше (и которые будут раздражены, если их заставят слушать подсказку, на которую они уже ответили).

Есть несколько способов, чтобы компьютер отправлял аудиоданные на модем с такой скоростью, чтобы не отставать от воспроизведения без переполнения аудиобуфера.

Самый простой - использовать управление потоком CTS. Существуют следующие предостережения.

  • В некоторых голосовых модемах есть ошибки в реализации управления потоком. В частности, большое количество наборов микросхем Conexant иногда отключает свою линию CTS и никогда не восстанавливает ее во время воспроизведения. Conexant - это чрезвычайно популярный сегодня набор микросхем в голосовых модемах, и в остальном они хорошо реализуют голосовые команды, поэтому стоит подумать об устранении этой ошибки. Некоторые наборы микросхем Conexant также не возвращают CTS в исходное состояние, если команда «прерывание воспроизведения» отправляется или обрабатывается модемом, когда CTS не работает.
  • Некоторые голосовые модемы предлагают очень большой буфер передачи (например, 4 секунды аудио) вместе с ошибкой, которая не позволяет хосту запрашивать «прерывание воспроизведения». В результате, если вызывающий абонент нажимает тональный сигнал, который должен прервать сообщение, а хост предоставляет неограниченное количество аудиоданных, опосредованных только CTS, конечным результатом является то, что сообщение не может быть прервано по крайней мере в течение 4 секунд.

Второй способ ограничения воспроизведения включает опрос таймера «тика», предоставляемого операционной системой главного компьютера и основанный на аппаратных часах, которые не зависят от загрузки центрального процессора хоста. Это может быть или не быть доступным, и это полностью зависит от операционной системы хоста. Однако при наличии он чрезвычайно надежен. Разумно предположить, что ПК должен опережать воспроизведение на пару сотен байт, и что модем будет буферизовать это. (Команды AT + VBQ или AT # VBQ на голосовых модемах часто показывают размер буфера в байтах, типичный ответ - от 1 до 2 килобайт.)

Третий способ ограничения воспроизведения включает в себя вставку фиктивных сообщений DLE в выходной поток, так что аудиоданным требуется известное количество времени для передачи через последовательный порт, а воспроизведение по существу синхронизируется UART в последовательном порту.

Например, при рассмотрении использования фиктивной начинки DLE необходимо сначала отметить несколько моментов. В типичном сценарии одна секунда звука может составлять 8000 однобайтовых отсчетов, а при небольшом проценте отсчетов, равных байту DLE, который должен быть удвоен, типичная секунда звука может составлять 8 050 байт. Хитрость заключается в том, чтобы вставить достаточно бессмысленных сообщений DLE в байты, которые модем будет отбрасывать (то есть DLE, за которым следует байт без какого-либо конкретного значения), чтобы было ровно 11520 байтов (при условии, что последовательный порт заблокирован на скорости 115 200 бит / с). передача через последовательный порт займет ровно 1 секунду. Хотя возможно, что задержка прерывания на главном ПК может привести к отправке чуть менее 11520 байт в секунду,большинство голосовых модемов перед фактическим запуском воспроизведения буферизует достаточно байтов, чтобы допустить небольшой перекос. Также ПК можно запрограммировать на преобразование секунды звука в немного меньше 11520 байт (все голосовые модемы будут буферизовать небольшойпереполнение без необходимости управления потоком, если оно не превышает нескольких сотен байт).

Пустая начинка DLE вряд ли будет работать с "Winmodems", у которых нет физического UART. Это имеет смысл только с внешними последовательными модемами, которые физически синхронизируются с определенной скоростью передачи с помощью тактового генератора за внешним последовательным портом.

Запись аудиоданных [ редактировать ]

Метод записи аудиоданных тот же, за исключением того, что используется команда AT + VRX или AT # VRX , и модем передает аудиоданные, пока компьютер их получает. Управление потоком RTS / CTS здесь не используется (компьютер должен принимать все аудиоданные, которые он получает, а модем автоматически ускоряет передачу в соответствии с частотой дискретизации звука).

Модем никогда не прекращает передачу, пока компьютер не прикажет ему остановиться, что обычно происходит с помощью CTRL-C. Данные всегда заканчиваются DLE + !, и все байты DLE, встречающиеся в потоке, отправляются дважды, чтобы отличить их от обычных сообщений DLE.

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

  • Обнаружены нажатия клавиш с тональным набором
  • Обнаружена тишина
  • Обнаружено изменение полярности линии (часто означает, что вызывающий абонент повесил трубку)
  • Обнаружен тональный сигнал ответа станции
  • Обнаружен тональный сигнал факса

Когда модем хочет сообщить об этом хосту, он отправляет байт DLE плюс (обычно) 1-байтовое сообщение, описывающее событие. Список поддерживаемых событий зависит от модема, но обычно цифра (а также * и #) означает нажатие тональных сигналов, а буква «s» означает обнаружение тишины. Некоторые модемы сообщают только об одном событии для каждого нажатия клавиши тонального набора, в то время как другие сообщают о многократном нажатии клавиши до тех пор, пока клавиша не будет отпущена, а затем о специальном событии «клавиша отпущена».

Завершение голосового вызова [ править ]

Любая из следующих команд обычно приводит к тому, что модем кладет трубку и завершает голосовой вызов: AT + VLS = 0 , AT # VLS = 0 , ATH , ATZ . Отключение сигнала RS-232 DTR (готовность терминала данных) также часто позволяет добиться этого. Модем остается в голосовом режиме (кроме случая ATZ).

Голосовые модемы не кладут трубку автоматически, даже если звонящий на другом конце линии делает это. Они могут сообщать о событиях зависания, гудка или молчания, но компьютер должен действовать в соответствии с ними. Если во время записи модем вешает трубку, а компьютер не реагирует, модем продолжит обеспечивать аудиозапись всего остального, что слышно на линии, например гудков, сообщений об ошибках телефонной компании и т. Д.

См. Также [ править ]

  • Набор команд Hayes
  • Список рекомендаций ITU-T серии V
  • Телефония

Ссылки [ править ]

  • Справочное руководство по AT-командам для чипсетов Rockwell, Conexant и Lucent. (Каждый производитель чипсета выпускает руководство с таким же названием, за которым следует название продукта, к которому оно относится)
  • Документация по технической поддержке Zoom, справочные материалы по AT-командам
  • Международный союз электросвязи (февраль 1998 г.), Управление голосовыми функциями в АКД с помощью асинхронного DTE , Серия V: Передача данных по телефонной сети: процедуры управления, Международный союз электросвязи, Рекомендация МСЭ-Т V.253
  • Мирхо, Чарльз (август 1996 г.), "Чтобы узнать о расширениях голосового модема для Windows 95, нажмите 1 сейчас!" , Microsoft Systems Journal , Стандарт Hayes AT способствовал широкому распространению модемов для передачи данных, потому что программы могли просто послать соответствующие AT-mumble-this и AT-mumble-that, и любой модем, поддерживающий стандарт AT, будет знать, что делать. Похоже, что аналогичный стандарт AT + V появился и для голосовых модемов. Набор команд AT + V состоит из команд Hayes с префиксом AT и голосовых команд с префиксом + V. AT + V задокументирован как стандарт ANSI / TIA / EIA IS-101, озаглавленный «Временный стандарт факсимильных цифровых интерфейсов и голосового управления для асинхронной DCE». Дополнением к этой спецификации является PN-3131 Технического подкомитета TIA TR-29.2.