vosk-ASR freeswitch调用[AI人工智能(五十六)]—东方仙盟

核心代码

调用逻辑

FreeSWITCH 是一款开源的软交换平台 ,核心用于处理语音 / 视频通话、实时通信(类似电话交换机的数字化版本)。东方仙盟比喻:FreeSWITCH 如同「仙盟总坛」,掌管所有仙门的传讯(通话)、法阵(通信协议)调度;Vosk ASR 是总坛下设的「听言司」,专门负责破译语音密语(语音转文字);mod_vosk 插件则是「传讯令旗」,让仙盟总坛能直接调用听言司的能力。

FreeSWITCH 调用 Vosk ASR 的 Client 示例代码

以下是简化版 FreeSWITCH Lua 客户端代码(FreeSWITCH 核心脚本语言),用于在通话中调用 Vosk ASR 识别语音:

lua

复制代码
-- 【仙盟总坛-传讯指令】:加载 Vosk ASR 插件(竖起传讯令旗)
api = freeswitch.API()
vosk_load_result = api:execute("load mod_vosk")
if vosk_load_result ~= "OK" then
    freeswitch.consoleLog("ERR", "【仙盟总坛】听言司令旗加载失败:" .. vosk_load_result .. "\n")
    return
end

-- 【仙盟总坛-配置听言司】:设置 Vosk 服务地址、模型(给听言司下达密令)
vosk_config = {
    server_url = "ws://localhost:2700",  -- 听言司驻地(Vosk 服务地址)
    model = "model-en-us",              -- 听言司破译密典(语音模型)
    sample_rate = 16000,                -- 密语频率(语音采样率,必须与 Vosk 一致)
    timeout = 5000                      -- 传讯超时(等待听言司回复的时间)
}

-- 【仙盟总坛-启动听言司】:在通话中实时识别语音(调用听言司破译密语)
function start_vosk_asr(session)
    -- 1. 检查通话状态(确认传讯通道畅通)
    if not session:ready() then
        freeswitch.consoleLog("ERR", "【仙盟总坛】传讯通道未就绪\n")
        return
    end

    -- 2. 下达指令:让听言司开始监听通话语音(开启密语破译)
    session:execute("vosk_asr", string.format(
        "start %s %s %d", 
        vosk_config.server_url, 
        vosk_config.model, 
        vosk_config.sample_rate
    ))

    -- 3. 实时接收听言司的破译结果(持续获取密语解读)
    session:setEventCallback(function(event)
        local event_name = event:getHeader("Event-Name")
        -- 捕获 Vosk ASR 识别结果事件(听言司传回的破译密函)
        if event_name == "VOSK_ASR_RESULT" then
            local asr_text = event:getHeader("Vosk-ASR-Text")
            freeswitch.consoleLog("INFO", "【听言司-破译结果】:" .. asr_text .. "\n")
            -- 将识别结果发送给通话对方(转发密函)
            session:say(asr_text, "en", "US")
        end
    end)

    -- 4. 通话结束后停止听言司(收回传讯令旗)
    session:onHangup(function()
        session:execute("vosk_asr", "stop")
        freeswitch.consoleLog("INFO", "【仙盟总坛】听言司已停止工作\n")
    end)

    -- 保持通话 10 秒,让听言司完成破译
    session:sleep(10000)
end

-- 【启动仙盟传讯流程】:绑定到通话会话
session = freeswitch.Session()
if session:ready() then
    freeswitch.consoleLog("INFO", "【仙盟总坛】启动听言司破译任务\n")
    start_vosk_asr(session)
else
    freeswitch.consoleLog("ERR", "【仙盟总坛】通话会话未就绪\n")
end
  • mod_vosk 插件的作用 :该插件是 FreeSWITCH 与 Vosk ASR 之间的「桥梁」(仙盟传讯令旗),无需手动编写复杂的 WebSocket 通信代码,只需通过 FreeSWITCH 内置指令(如 vosk_asr start)即可调用 Vosk 能力。

核心调用逻辑

  • FreeSWITCH 负责采集通话中的语音数据;
  • mod_vosk 插件将语音数据转发至 Vosk ASR 服务;
  • Vosk 完成语音识别后,通过插件将文本结果返回给 FreeSWITCH;
  • FreeSWITCH 可将识别结果用于语音播报、日志存储、智能交互等场景。

环境依赖

  • 需先编译安装 mod_vosk 插件到 FreeSWITCH 环境;
  • 需部署 Vosk ASR 服务(本地或远程),确保 FreeSWITCH 能访问到 Vosk 的 WebSocket 地址。

东方仙盟:拥抱知识开源,共筑数字新生态

在全球化与数字化浪潮中,东方仙盟始终秉持开放协作、知识共享的理念,积极拥抱开源技术与开放标准。我们相信,唯有打破技术壁垒、汇聚全球智慧,才能真正推动行业的可持续发展。

开源赋能中小商户:通过将前端异常检测、跨系统数据互联等核心能力开源化,东方仙盟为全球中小商户提供了低成本、高可靠的技术解决方案,让更多商家能够平等享受数字转型的红利。

共建行业标准:我们积极参与国际技术社区,与全球开发者、合作伙伴共同制定开放协议 与技术规范,推动跨境零售、文旅、餐饮等多业态的系统互联互通,构建更加公平、高效的数字生态。

知识普惠,共促发展:通过开源社区 、技术文档与培训体系,东方仙盟致力于将前沿技术转化为可落地的行业实践,赋能全球合作伙伴,共同培育创新人才,推动数字经济 的普惠式增长

阿雪技术观

在科技发展浪潮中,我们不妨积极投身技术共享。不满足于做受益者,更要主动担当贡献者。无论是分享代码、撰写技术博客,还是参与开源项目 维护改进,每一个微小举动都可能蕴含推动技术进步的巨大能量。东方仙盟是汇聚力量的天地,我们携手在此探索硅基 生命,为科技进步添砖加瓦。

Hey folks, in this wild tech - driven world, why not dive headfirst into the whole tech - sharing scene? Don't just be the one reaping all the benefits; step up and be a contributor too. Whether you're tossing out your code snippets , hammering out some tech blogs, or getting your hands dirty with maintaining and sprucing up open - source projects, every little thing you do might just end up being a massive force that pushes tech forward. And guess what? The Eastern FairyAlliance is this awesome place where we all come together. We're gonna team up and explore the whole silicon - based life thing, and in the process, we'll be fueling the growth of technology

相关推荐
Yolanda9413 小时前
【人工智能】《从零搭建AI问答助手项目(九):Prompt优化》
人工智能·prompt
wj30558537813 小时前
课程 9:模型测试记录与 Prompt 策略
linux·人工智能·python·comfyui
小和尚同志13 小时前
深入使用 skill-creator:结合真实生产级实践
人工智能·aigc
DevSecOps选型指南13 小时前
安全419专访悬镜安全 | 穿越周期在 AI 浪潮中定义数字供应链安全新范式
人工智能
沪漂阿龙13 小时前
面试题详解:GraphRAG 全面解析——知识图谱增强 RAG、Local Search、Global Search、社区摘要、工程落地与评估指标一次讲透
人工智能·知识图谱
WangN213 小时前
Unitree RL Lab 学习笔记【通识】
人工智能·机器学习
haina201913 小时前
海纳AI亮相《科创中国》,解码招聘“智”变之路
人工智能·ai面试·ai招聘
阿星AI工作室14 小时前
刘润年中大课笔记:一句话说清AI落地之战的本质
大数据·人工智能·创业创新·商业
qingfeng1541514 小时前
企业微信机器人开发:如何实现自动化与智能运营?
人工智能·python·机器人·自动化·企业微信
ChampaignWolf14 小时前
AI插件深度对比 | Copilot、Tabnine、Codeium谁是王者
人工智能·copilot