Набор команд голосового модем
![]() | Эта статья имеет несколько вопросов. Пожалуйста, помогите улучшить его или обсудить эти вопросы на странице разговоров . ( Узнайте, как и когда удалить эти сообщения )
|
Голосовой модем -это аналоговый телефонных данных модем со встроенной возможностью передачи и получения голосовых записей по телефонной линии. Голосовые модемы используются для телефонии и автоответчиков приложений . Подобно команде Hayes , используемому для модемов данных, в котором хост-ПК командует модему через серию команд, известных как команды , существует четко определенный набор общего голоса в командах, которые несколько последовательны во всей отрасли.
Проблемы реализации
[ редактировать ]![]() | Эта статья , возможно, содержит оригинальные исследования . ( Ноябрь 2013 ) |
Поскольку голосовой режим не является типичным использованием для модема, многие модемы на рынке имеют плохую или баггирующую поддержку для своих режимов голоса. Характеристики хорошего голосового модема во многом зависят от предполагаемого применения и включают:
- Надежная операция. Многие модемы просто «заблокируют» или сбили хост -компьютер, хотя это чаще встречается с WinModems . У других есть ошибки управления потоком и другие ошибки в реализации, что, возможно, вызывает вызовы вешать, аудио для пропуска или аудио, чтобы продолжать играть после попытки прервать.
- Хорошие звуковые характеристики. Некоторые модемы имеют нескорректно низкий объем сигнала или вызывают аудио -шум. Некоторые модемы не могут распознать все, кроме лучших сигналов DTMF . Некоторые модемы выполняют плохую работу по записи или обнаружению и сообщению о молчании или изменении напряжения в конце вызовов, которые нуждаются в некоторых приложениях.
- Поддержка идентификатора вызывающего абонента , если это необходимо. «Идентификатор вызывающего 1 типа 1, как используется в Северной Америке, отсутствует в подавляющем большинстве модемов. Почти все модемовые чипсеты поддерживают идентификатор вызывающего абонента, но поскольку типичный пользователь интернет-набора не нуждается в идентификаторе вызывающего абонента, дополнительные компоненты, необходимые для поддержки идентификатора вызывающего абонента, часто пропускаются по причинам затрат.
- Поддержка нескольких случаев. Драйверы для многих внутренних модемов (обычно выигрышных модемов) не могут переносить более чем одно из того же устройства внутри одного компьютера. Симптомы несовместимости включают в себя аварии, синие экраны смерти или простую неопределенность всего, кроме одного модема. Внешние модемы на основе RS -232 (последовательные) не имеют этого ограничения, потому что каждый модем содержит свой собственный микропроцессор и не знает о других модемах на одном хосте. USB- модемы могут иметь или не иметь эту проблему, потому что некоторые USB-модемы представляют собой просто серийные модемы с «USB-серийным» чипсетом преобразователя (в этом случае проблемы не должно быть), а другие USB-модемы «контролируются хостом». и по сути являются внешне прикрепленными WinModems (в этом случае проблема может сохраняться).
Плюс против хэша
[ редактировать ]Каждая платформа голосового модеми имеет тенденцию поддерживать любой из двух наборов голосовых команд - в частности, один аромат набора команды содержит знак плюс (+), а другой содержит знак хэш (#).
Обнаружение голосового режима
[ редактировать ]Поддержка голосового режима может быть обнаружена на модемом, выпустив следующую команду: at+fclass =?
Обычно поддерживается эта команда, содержащая знак плюса, поддерживает ли модем «плюс» или командный набор «хэш», потому что команда (которая означает «класс факс») является частью стандартных по факсу команд в отрасли, которые всегда используют плюс Полем
Модем, поддерживающий голос, будет отвечать списком чисел, который включает номер 8. Модем, не поддерживающий голос, ответит ошибкой , или со списком чисел, не включающих 8. (Многие модемы будут сообщать о 0,1,2 Указывая поддержку данных (0) и факсов класса 1 и 2 - это свидетельствует о том, что голосовая поддержка отсутствует.)
Модемы, поддерживающие командный набор «хэш», обычно отвечают на #CLS =? также.
Ввод голосового режима
[ редактировать ]Команда AT+FCLASS = 8 или AT#CLS = 8 поместит модем в голосовой режим. Большинство модемов все еще остаются в крючке и отвечают OK . После того, как эта команда будет принята, большинство модемов будут отвечать сообщениями о спасении данных (DLE) вместо или в дополнение к нормальным ответам модема. Например, вместо сообщений о телефонной линии, звонившей с кольцевым сообщением, многие модемы вместо этого отправят символ DLE ASCII , за которым следует буква R. Специальный набор событий DLE, о котором сообщается каждый модем, специфичен для его чипсета и задокументирован в его Справочное руководство.
Запрос возможностей модема
[ редактировать ]Команда AT+VLS =? Или на#vls =? Обычно возвращает список режимов эксплуатации, которые специфичны для каждого модема. Каждый из этих пронумерованных режимов определяет статус телефонной линии или статус вне дома, а также маршрутизацию звука между каждым из следующих:
- Запись/воспроизведение
- Телефонная трубка
- Разъем громкоговорителя (который может быть просто затруднен в качестве аудио ввод на звуковой карте ПК вместо того, чтобы быть отдельным разъемом)
- Microphone Gack (доступен на некоторых голосовых модемах)
Многие чипсеты предлагают список всех возможных комбинаций режимов, даже если конкретная модемная плата не поддерживает их всех. Это связано с тем, что производитель платы почти всегда отличается от производителя чипсета, а чипсет поставляется предварительно настроенным для поддержки всех возможных оборудования, даже если они не реализованы на плате.
Пример ответа на AT+VLS =? от модема на рынке в 2006 году:
AT+VLS=? 0,"",0000000000,0000000000,B084008000 1,"T",0B8418E000,0FE418E000,0B8419E000 2,"L",0884008000,0CE4008000,0884018000 3,"LT",0B8418E000,0FE418E000,0B8419E000 4,"S",0084008000,0484008000,3084018000 5,"ST",0B8418E000,0FE418E000,0B8419E000 6,"M",0084008000,04E4008000,3084008000 7,"MST",0B8418E000,0FE418E000,0B8419E000 8,"S1",0084008000,0484008000,3084018000 9,"S1T",0B8418E000,0FE418E000,0B8419E000 10,"MS1T",0B8418E000,0FE418E000,0B8419E000 11,"M1",0084008000,04E4008000,3084008000 13,"M1S1T",0B8418E000,0FE418E000,0B8419E000 14,"H",0084008000,04E4008000,3084018000 15,"HT",0B8418E000,0FE418E000,0B8419E000 16,"MS",0084008000,04E4008000,3084018000 17,"MS1",0084008000,04E4008000,3084018000 19,"M1S1",0084008000,04E4008000,3084018000 20,"t",0B8418E000,0FE418E000,BB8419E000
В то время как каждый модем отличается, обычно режим 0 означает, что он находится на крючке (подвеска), а режим 1 достаточно, чтобы забрать телефон, записать/воспроизвести звук и обнаружить DTMF (Touch Tones).
Команда AT+VSM =? Или на#vsm =? Обычно возвращает список форматов аудиоданных, поддерживаемых модемом. Каждый формат включает имя (например, PCM , ADPCM , μ-LAW , A-LAW ), несколько бит на образец (обычно 2, 3, 4, 8 или 16) и скорость отбора проб звука (обычно 7200, 8000 , или 11 025 герц ). Это стандартные аудиокодеки , реализации которых хорошо опубликованы. Стандарт ADPCM является исключением. Модемы утверждают, что поддержка ADPCM почти всегда поддерживает диалогический ADPCM , также известный как «Vox», который аналогичен, но не совместима с другими реализациями ADPCM, включая интерактивную мультимедийную ассоциацию (IMA) ADPCM, а также MS ADPCM (внедрение Microsoft, используемая в WAV -файлах (IMA), а также MS ADPCM (A Microsoft, используемая в WAV -файлах (IMA). ) Модемы могут также поддерживать их, если перечислен квалификатор - по умолчанию ADPCM означает диалогию.
Пример ответа на AT+VSM =? от модема на рынке в 2006 году:
AT+VSM=? 1,"UNSIGNED PCM",8,0,8000,0,0 129,"IMA ADPCM",4,0,8000,0,0 130,"UNSIGNED PCM",8,0,8000,0,0 140,"2 Bit ADPCM",2,0,8000, 141,"4 Bit ADPCM",4,0,8000,0,0
Желаемый формат аудиоданных выбирается с использованием той же команды, но с номером вместо вопроса. Он используется как для отправки, так и для получения.
Отвечая на звонки
[ редактировать ]Ответ на вызовы обычно выполняются с помощью команд AT+VLS = N или AT#VLS = N , где n - это число, представляющее режим модема. Для подавляющего большинства модемов этот номер будет 1, чтобы ответить на телефонный звонок и 0, чтобы повесить трубку; Другие числа активируют другие функциональные возможности, такие как громкоговоритель. Некоторые модемы отвечают в ответ на ATA -стандартную команду ответов на данные данных-но другие модемы будут интерпретировать это как команду, чтобы фактически отвечать в данные, а не в голосовом режиме.
Передача аудиоданных
[ редактировать ]Чтобы начать передачу аудиоданных, хост отправляет команду по адресу+vtx или #vtx . Это приводит к ответу от модемного подключения или VCON . (Модемы, используя набор команд «плюс», обычно отвечают подключение, в то время как те, которые используют набор «хэш», отвечают vcon, который означает голосовое соединение.)
С тех пор модем интерпретирует любые данные, отправляемые с компьютера в виде волновых аудиоданных, используя кодек, выбранную командой AT+VSM или AT#VSM.
Аудиоданные всегда отправляются в модем немного быстрее, чем он может воспроизводить его, поэтому модем может буферировать небольшую его часть и воспроизводить его гладко без каких -либо кликов или всплесков, вызванных задержками в операционной системе компьютера. Например, во время воспроизведения аудиофайлы 8 кГц при 8-битном разрешении (которая создает 8 000 байтов или 80 000 бит при включении битов запуска/остановки в секунду), данные должны проходить через последовательный порт как минимум 115 200 бит в секунду. (115 200 бит/с является первой настройкой типичного компьютерного последовательного порта, который превышает 80 000.) Кроме того, из -за некоторых дополнительных накладных расходов, связанных с удвоением байтов DLE в потоке (упомянуто ниже), небольшое количество дополнительной полосы является обязательным Чтобы разрешить это.
Когда модем хочет, чтобы компьютер временно сделал паузу, чтобы воспроизведение могло наверстать упущенное, он временно снижает сигнал CTS (очистить) в серийном порту RS-232. Модем пересматривает сигнал вовремя для компьютера возобновить отправку аудиоданных, прежде чем буфер воспроизведения станет совершенно пустым.
Когда компьютер хочет сигнализировать об окончании аудиоданных, большинство модемов ожидают увидеть символ ASCII DLE (0x10), за которым следует! характер.
Поскольку байт DLE может и часто встречается в обычных аудиодадах, его следует дважды отправлять в модем, когда он должен интерпретироваться как байт аудиоданных.
Большинство модемов также принимают последовательность DLE + CAN (отменить) в качестве сигнала для отмены воспроизведения звука. Различие состоит в том, что модем состоит в том, чтобы понять, что он должен немедленно прервать воспроизведение сейчас, а не допустить оставшиеся данные в буфере воспроизведения до завершения.
Когда модем закончится воспроизведение, он отвечает ОК .
Дроссельная воспроизведение
[ редактировать ]Во время воспроизведения необходимо отправлять аудиоданные со скоростью, которая держит звук гладко гладко, но не отправляя их быстрее, чем модем может справиться с ним. Также желательно убедиться, что модем всегда может прервать воспроизведение и отказаться от любого буферированного звука в случае отмены сообщения. Отмена сообщений ожидается абонентами, которые уже знают ответы на голосовые подсказки и дают свой ответ рано (и которые будут раздражены тем, что их вынуждены выслушать подсказку, на которую они уже ответили).
Есть несколько способов, чтобы компьютер отправлял аудиоданные в модем со скоростью, чтобы не отставать от воспроизведения, не преодолевая аудио буфер.
Наиболее простым является использование CTS Control. Существуют следующие предостережения.
- Некоторые голосовые модемы имеют ошибки в их реализации управления потоком. В частности, большое количество чипсетов Conexant иногда бросает линию CTS и никогда не возвращается во время воспроизведения. Conexant - это чрезвычайно популярный чипсет в голосовых модемах сегодня, и в противном случае они хорошо реализуют голосовые команды, что делает стоит рассмотреть вопрос о работе вокруг этой ошибки. Некоторые Conexant Chipsets также не приведут CTS обратно, если команда «Playback Abort» отправляется или обрабатывается модемом, когда CTS не работает.
- Некоторые голосовые модемы предлагают очень большой буфер передачи (например, на 4 секунды звука) в сочетании с ошибкой, которая мешает хосту запросить «прерванное воспроизведение». Результатом является то, что если вызывающий вызывающий нажимает сенсорный тон, который должен прервать сообщение, а хост предоставляет неограниченные аудиодатики, опосредованные только CTS, конечным результатом является то, что сообщение не может быть прервано не менее 4 секунд.
Второй способ воспроизведения дроссельной заслонки включает в себя опрос «Тик», предоставляемый операционной системой хост -компьютера, и на основе аппаратных часов, которые не зависят от загрузки процессора хоста. Это может быть или не быть доступным, и это полностью зависит от операционной системы хоста. Однако, когда доступно, это чрезвычайно надежно. Разумно предположить, что ПК должен оставаться впереди воспроизведения на пару сотен байтов, и что модем будет буферен. (Команды AT+VBQ или в#VBQ на голосовых модемах часто выявляют размер буфера в байтах, а от 1 до 2 килобитов - типичный ответ.)
Третий способ воспроизведения дроссельной заслонки включает в себя вставку фиктивных сообщений DLE в выходной поток, чтобы аудиоданные занимали известное количество времени для передачи через серийный порт, и воспроизведение по существу было включено UART в последовательном порту.
Например, при рассмотрении использования фиктивной начинки DLE, сначала необходимо отметить несколько вещей. В типичном сценарии одна секунда звука может составлять 8000 однобайтных образцов, и с небольшим процентом от образцов, равных байту DLE и должен быть удвоен, типичная секунда звука может составлять 8050 байтов. Хитрость включает в себя вставку достаточного количества бессмысленных сообщений DLE в байты, которые модем будет отбросить (то есть DLE, за которым следует байт без какого -либо конкретного значения), так что ровно 11 520 байтов (при условии, что серийный порт заблокирован в 115 200 бит/с). который займет ровно 1 секунду, чтобы передать через последовательный порт. Хотя возможно, что задержка прерывания на хост -ПК может привести к отправке чуть менее 11 520 байтов в секунду, большинство голосовых модемов будут буферизовать достаточно байтов, прежде чем фактически начать воспроизведение, чтобы позволить небольшому перекосу. Кроме того, ПК можно запрограммировать на преобразование секунды звука в чуть менее 11 520 байт (все голосовые модемы будут буферизовать маленькие переполнен без необходимости управления потоком, если он составляет не более нескольких сотен байт).
Dummy Dle Fucking вряд ли будет работать с «WinModems», которые не имеют физического UART. Это имеет смысл только с внешними последовательными модемами, которые физически такта до определенной скорости бита с помощью генератора часов за внешним последовательным портом.
Запись аудиоданных
[ редактировать ]Метод записи аудиоданных одинаково, за исключением того, что команда находится AT+VRX , или AT#VRX , а модем передает аудиоданные, пока компьютер получает его. Управление потоком RTS/CTS здесь не используется (компьютер должен принимать все аудиоданные, которые он получает, и модем автоматически распространяет свою передачу в соответствии с скоростью отбора проб звука).
Модем никогда не перестает передавать, пока компьютер не скажет ему остановиться, что обычно находится в Ctrl-C. Данные всегда прекращаются с помощью DLE+!, И все байты DLE, естественно, встречающиеся в потоке, отправляются дважды, чтобы дифференцировать их от обычных сообщений DLE.
Перед, во время и после записи модем может уведомить обезживание компьютера о конкретных событиях, включая, но не ограничиваясь, следующее:
- Обнаруженные клавишники с сенсорным тоном
- Молчание обнаружено
- Обнаружено изменение полярности линии (часто означающее повествование вызывающего абонента)
- Обнаружено тональный сигнал
- Факс обнаружен
Когда модем хочет рассказать об этом хосту, он отправляет дл-байт, а также (обычно) 1-байтовое сообщение, описывающее событие. Список поддерживаемых событий варьируется в зависимости от модема, но обычно цифра (а также * и #) означает нажатые на сенсорные тона, а буква «S» означает обнаруженное молчание. Некоторые модемы сообщают только о одном событии для каждого сенсорного тона, в то время как другие неоднократно сообщают о ключевом виде до тех пор, пока ключ не будет выпущен, а затем специальное событие «выпущено клавиш».
Завершение голосового звонка
[ редактировать ]Любая из следующих команд обычно заставляет модем повесить трубку и прекращать голосовой вызов: at+vls = 0 , at#vls = 0 , ATH , ATZ . Отбрасывая сигнал RS-232 DTR (готовый к терминалу данных) часто выполняет это. Модем остается в голосовом режиме (за исключением случаев ATZ).
Голосовые модемы не висят автоматически, даже когда вызывающий абонент на другом конце делает. Они могут сообщать о событиях пособия, диалтона или тишины, но компьютер должен действовать на них. Если модем записывается, абонент висит трубку, а компьютер не отреагирует, модем продолжит предоставлять аудиозапись всего остального, услышанного на линии, таких как тоны диска, сообщения об ошибках телефонной компании и так далее.
Смотрите также
[ редактировать ]Ссылки
[ редактировать ]- В командном справочном руководстве для чипсетов Rockwell, Conexant и Lucent. (Каждый производитель чипсета производит руководство с таким же названием, за которым следует название продукта, к которому он применяется)
- Zoom Tech Support Documentation, в командных ссылках
- Международный союз телекоммуникации (февраль 1998 г.), контроль функций, связанных с голосом, в DCE с помощью асинхронного DTE , серия V: Коммуникация передачи данных над телефонной сетью: процедуры управления, Международный союз телекоммуникации, Рекомендация ITU-T v.253
- Мирхо, Чарльз (август 1996 г.), «Чтобы узнать о расширениях голосовых модемных модем, для Windows 95, нажмите 1 сейчас!» , Microsoft Systems Journal ,
Hayes at Standard помог поощрять широкое принятие модемов данных, потому что программы могут просто отправить соответствующие атмосферы-это и атмосфера, и любой модем, который говорит о стандарте, будет знать, что делать. Похоже, что аналогичный стандарт, по -видимому, также появился и для голосовых модемов. Командный набор AT +V состоит из команд At-Prefixed Hayes и +V-представленных голосовых команд. AT+V задокументирован как стандарт ANSI/TIA/EIA IS-101 под названием «Факсимильный цифровой интерфейс-промежуток времени для асинхронного DCE». Последующая продолжение этой спецификации-PN-3131 Технический подкомитет TIA TR-29.2.