Как FreeSWITCH интегрирует кодек AMR/AMR-WB
Как FreeSWITCH интегрирует кодек AMR/AMR-WB

FreeSWITCHверноAMRиAMR-WBДва видакодирование По умолчанию используется форматpassthoughсостояние,Если ты хочешь быть правымAMRиAMR-WBКодируйте и декодируйте,需верноmod_amrиmod_amrwbДва модуля были переработаны.компилировать。

Эта статья представлена ​​Исходным кодкомпилироватьнеобходимыйopencore-amrиov-amrwbencДве зависимые библиотеки。Конечно, его также можно использоватьyumУстановка напрямую с помощью других инструментовlibopencore-amrnb.solibopencore-armwb.solibvo-amrwbenc.so

* Все пути, описанные в этой статье, могут быть изменены в соответствии с реальными условиями и не ограничиваются пользователями root.

- Компиляция AMR -

скачатьOpenCore AMRИсходный код,URL: https://sourceforge.net/projects/opencore-amr/files/opencore-amr,Рекомендуемая версия — 0.1.3. Как показано ниже:

Разархивируйте сжатый пакет и войдите в корневой каталог исходного кода для установки:

Язык кода:javascript
копировать
tar xzf opencore-amr-0.1.3.tar.gz
cd opencore-amr-0.1.3/
./configure --prefix=/root/libs
make && make install

- Компиляция AMR-WB -

Если бы толькоAMRкодирование Формат,Вы можете пропустить этот шаг напрямую.

OpenCore AMRИсходный код Сжатый пакет содержитAMR-NBкодированиеи解码,ноAMR-WBПоддерживает толькокодирование,Поэтому нам нужно добавитьAMR-WBспособность декодирования。

скачатьvo-amrwbencСжатый пакет,URL: https://sourceforge.net/projects/opencore-amr/files/vo-amrwbenc,Рекомендуемая версия — 0.1.3.,Как показано ниже:

Разархивируйте сжатый пакет и войдите в корневой каталог исходного кода для установки:

Язык кода:javascript
копировать
tar xzf vo-amrwbenc-0.1.3.tar.gz
cd vo-amrwbenc-0.1.3/
./configure --prefix=/root/libs
make && make install

До сих пор,Компиляция библиотеки зависимостей завершена,opencore-amrиov-amrwbencустановлены в/root/libsв папке,Дерево каталогов выглядит следующим образом:

Язык кода:javascript
копировать
.
├── include
│   ├── opencore-amrnb
│   │   ├── interf_dec.h
│   │   └── interf_enc.h
│   ├── opencore-amrwb
│   │   ├── dec_if.h
│   │   └── if_rom.h
│   └── vo-amrwbenc
│       └── enc_if.h
└── lib
    ├── libopencore-amrnb.a
    ├── libopencore-amrnb.la
    ├── libopencore-amrnb.so -> libopencore-amrnb.so.0.0.3
    ├── libopencore-amrnb.so.0 -> libopencore-amrnb.so.0.0.3
    ├── libopencore-amrnb.so.0.0.3
    ├── libopencore-amrwb.a
    ├── libopencore-amrwb.la
    ├── libopencore-amrwb.so -> libopencore-amrwb.so.0.0.3
    ├── libopencore-amrwb.so.0 -> libopencore-amrwb.so.0.0.3
    ├── libopencore-amrwb.so.0.0.3
    ├── libvo-amrwbenc.a
    ├── libvo-amrwbenc.la
    ├── libvo-amrwbenc.so -> libvo-amrwbenc.so.0.0.4
    ├── libvo-amrwbenc.so.0 -> libvo-amrwbenc.so.0.0.4
    ├── libvo-amrwbenc.so.0.0.4
    └── pkgconfig
        ├── opencore-amrnb.pc
        ├── opencore-amrwb.pc
        └── vo-amrwbenc.pc

- Добавить переменные среды -

потому чтоopencore-amrиvo-amrwbencПуть установки – это наш индивидуальный путь.(Рекомендуется устанавливать обе библиотеки по одному и тому же пути.,Путь Конфигурация указывается через --prefix при настройке.,Эта установка/root/libs),Переменная среды Конфигурация необходима, чтобы сообщить FreeSWITCH расположение зависимой библиотеки.

Язык кода:javascript
копировать
vim ~/.bash_profile
Добавьте следующую строку:
export PKG_CONFIG_PATH=/root/libs/lib/pkgconfig:$PKG_CONFIG_PATH
Сохранить и выйти
source ~/.bash_profile

- Скомпилировать mod_amr -

На этом этапе зависимые библиотеки установлены и можно приступить к компиляции модуля mod_amr.

Язык кода:javascript
копировать
Войти FreeSWITCHИсходный каталог кода, которым является /root/freeswitch-1.8.5 во время процесса установки.
cd /root/freeswitch-1.8.5
Восстановите Makefile модуля mod_amr.
./bootstrap.sh -j
./configure --prefix=/root/freeswitch-bin
cd src/mod/codecs/mod_amr
make
make install

На этом этапе компиляция mod_amr завершена, fs_cli попадает в консоль FreeSWITCH и загружает модуль mod_amr.

- Скомпилировать mod_amrwb -

Язык кода:javascript
копировать
Войти FreeSWITCHИсходный каталог кода, которым является /root/freeswitch-1.8.5 во время процесса установки.
cd /root/freeswitch-1.8.5
Восстановите Makefile модуля mod_amrwb.
./bootstrap.sh -j
./configure --prefix=/root/freeswitch-bin
cd src/mod/codecs/mod_amrwb
make
make install

На этом этапе компиляция mod_amrwb завершена, fs_cli попадает в консоль FreeSWITCH и загружает модуль mod_amrwb.

- Настроить маршрутизацию -

  • Новый формат кодирования

потому чтоFreeSWITCHпо умолчаниюкодирование Формат Внутри没有AMRиAMR-WB,Необходимо изменитьvars.xmlВнутриglobal_codec_prefsиoutbound_codec_prefsдва Конфигурацияэлемент,используется для Новый формат кодирование. Как показано ниже:

Язык кода:javascript
копировать
<X-PRE-PROCESS cmd="set" data="global_codec_prefs=OPUS,PCMU,PCMA,H264,AMR,AMR-WB"/>
<X-PRE-PROCESS cmd="set" data="outbound_codec_prefs=OPUS,PCMU,PCMA,H264,AMR,AMR-WB"/>

Требуется после завершения модификацииreloadxmlВступить в силу。

  • маршрутизация вызовов
  • AMR/AMR-ВБ в PCMA/PCMU
Язык кода:javascript
копировать
<extension name="Local_Extension">
<condition field="destination_number" expression="^(10[01][0-9])$">
<action application="bridge" data="{absolute_codec_string='PCMA\,PCMU'}user/$1"/>
</condition>
</extension>
  • PCMA/PCMU в AMR/AMR-ВБ
Язык кода:javascript
копировать
<extension name="Local_Extension">
<condition field="destination_number" expression="^(10[01][0-9])$">
<action application="bridge" data="{absolute_codec_string='AMR\,AMR-WB'}user/$1"/>
</condition>
</extension>

До сих пор,Вы можете использовать его с удовольствиемFreeSWITCHверноAMR/AMR-WBКодируйте и декодируйте了。

boy illustration
Неразрушающее увеличение изображений одним щелчком мыши, чтобы сделать их более четкими артефактами искусственного интеллекта, включая руководства по установке и использованию.
boy illustration
Копикодер: этот инструмент отлично работает с Cursor, Bolt и V0! Предоставьте более качественные подсказки для разработки интерфейса (создание навигационного веб-сайта с использованием искусственного интеллекта).
boy illustration
Новый бесплатный RooCline превосходит Cline v3.1? ! Быстрее, умнее и лучше вилка Cline! (Независимое программирование AI, порог 0)
boy illustration
Разработав более 10 проектов с помощью Cursor, я собрал 10 примеров и 60 подсказок.
boy illustration
Я потратил 72 часа на изучение курсорных агентов, и вот неоспоримые факты, которыми я должен поделиться!
boy illustration
Идеальная интеграция Cursor и DeepSeek API
boy illustration
DeepSeek V3 снижает затраты на обучение больших моделей
boy illustration
Артефакт, увеличивающий количество очков: на основе улучшения характеристик препятствия малым целям Yolov8 (SEAM, MultiSEAM).
boy illustration
DeepSeek V3 раскручивался уже три дня. Сегодня я попробовал самопровозглашенную модель «ChatGPT».
boy illustration
Open Devin — инженер-программист искусственного интеллекта с открытым исходным кодом, который меньше программирует и больше создает.
boy illustration
Эксклюзивное оригинальное улучшение YOLOv8: собственная разработка SPPF | SPPF сочетается с воспринимаемой большой сверткой ядра UniRepLK, а свертка с большим ядром + без расширения улучшает восприимчивое поле
boy illustration
Популярное и подробное объяснение DeepSeek-V3: от его появления до преимуществ и сравнения с GPT-4o.
boy illustration
9 основных словесных инструкций по доработке академических работ с помощью ChatGPT, эффективных и практичных, которые стоит собрать
boy illustration
Вызовите deepseek в vscode для реализации программирования с помощью искусственного интеллекта.
boy illustration
Познакомьтесь с принципами сверточных нейронных сетей (CNN) в одной статье (суперподробно)
boy illustration
50,3 тыс. звезд! Immich: автономное решение для резервного копирования фотографий и видео, которое экономит деньги и избавляет от беспокойства.
boy illustration
Cloud Native|Практика: установка Dashbaord для K8s, графика неплохая
boy illustration
Краткий обзор статьи — использование синтетических данных при обучении больших моделей и оптимизации производительности
boy illustration
MiniPerplx: новая поисковая система искусственного интеллекта с открытым исходным кодом, спонсируемая xAI и Vercel.
boy illustration
Конструкция сервиса Synology Drive сочетает проникновение в интрасеть и синхронизацию папок заметок Obsidian в облаке.
boy illustration
Центр конфигурации————Накос
boy illustration
Начинаем с нуля при разработке в облаке Copilot: начать разработку с минимальным использованием кода стало проще
boy illustration
[Серия Docker] Docker создает мультиплатформенные образы: практика архитектуры Arm64
boy illustration
Обновление новых возможностей coze | Я использовал coze для создания апплета помощника по исправлению домашних заданий по математике
boy illustration
Советы по развертыванию Nginx: практическое создание статических веб-сайтов на облачных серверах
boy illustration
Feiniu fnos использует Docker для развертывания личного блокнота Notepad
boy illustration
Сверточная нейронная сеть VGG реализует классификацию изображений Cifar10 — практический опыт Pytorch
boy illustration
Начало работы с EdgeonePages — новым недорогим решением для хостинга веб-сайтов
boy illustration
[Зона легкого облачного игрового сервера] Управление игровыми архивами
boy illustration
Развертывание SpringCloud-проекта на базе Docker и Docker-Compose