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

相关推荐
开发者如是说6 小时前
Vibe Code 了产品却无人下载?我写了个工具来帮你
人工智能·程序员·产品
AI科技星6 小时前
《01无穷全域信息场论:算子G与宇宙本体高维完备公理大典》
人工智能·python·算法·金融·乖乖数学·全域数学
战场小包6 小时前
AI 写代码越来越快,慢下来的那个人变成了我
人工智能·agent
sunywz7 小时前
【AI RAG知识库】05.【导入】【节点5】node_item_name_recognition
人工智能
彩云回7 小时前
长文档处理(Long Document Processing)策略
人工智能
AIGS0017 小时前
企业AI落地:从RAG到AgentRAG的技术跃迁
java·人工智能·人工智能ai大模型应用
程序员cxuan7 小时前
Claude Code 焚诀(一):Claude Code 六种心智模型
人工智能·后端
FlagOS智算系统软件栈7 小时前
FlagOS技术工作坊:当AI开始“自己部署自己”,大模型基础设施进入“无人驾驶”时代
人工智能
一楼的猫7 小时前
AI写作检测机制技术深度解析:200+维度检测、叙事指纹与网文AI辅助怎么过审
人工智能·学习·安全·chatgpt·ai写作
心中有国也有家7 小时前
鸿蒙 Flutter 本地存储实战:Hive CE 从入门到精讲
人工智能·hive·flutter·华为·harmonyos