0

0

PHP怎样集成出门问问AI_发语音指令调模型执行控制【秘籍】

星夢妙者

星夢妙者

发布时间:2026-01-13 15:31:02

|

692人浏览过

|

来源于php中文网

原创

出门问问api不支持端到端语音指令,需手动串联录音上传、asr转文本、语义解析与控制执行三步;音频须为pcm wav格式,调用需bearer token,转写结果需清洗后匹配规则或送入llm。

php怎样集成出门问问ai_发语音指令调模型执行控制【秘籍】

出门问问 API 不支持直接语音指令调用

出门问问(Mobvoi)官方开放平台目前只提供文本接口,audio_to_text 是单向语音转文本服务,text_to_response 是纯文本问答或意图识别,**没有“发语音→自动识别+理解+执行控制”的端到端语音指令通道**。所谓“发语音指令调模型执行控制”,实际需拆成三步:录音上传 → 语音转文本 → 文本送入大模型或规则引擎执行动作。

PHP 实现语音指令闭环的三步链路

需自行串联:前端录音(Web Audio API 或移动端 SDK)→ PHP 后端接收音频文件 → 调用出门问问 asr 接口转文本 → 解析语义(关键词 or 调用 llm_chat)→ 执行本地控制逻辑(如开关灯、查状态)。

  • 音频格式必须是 WAV(PCM 编码,16bit,单声道,16kHz),出门问问 ASR 不接受 MP3、AMR、M4A
  • 调用 /v1/asr 需携带 Authorization: Bearer {access_token},token 从开发者后台申请,有效期 2 小时,需缓存并自动刷新
  • 转写结果返回在 result.text 字段,可能含标点和语气词(如“打开空调。”、“那个…调高两度”),需做清洗再匹配
  • 若走 LLM 理解,别直接把原始转写文本喂给 /v1/llm/chat;先截取核心动宾结构(例如用正则 /打开|关闭|调高|调低|查询/ + 空调|灯光|窗帘),否则 token 浪费且响应慢
file_put_contents('/tmp/audio.wav', file_get_contents('php://input'));
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, 'https://api.mobvoi.com/v1/asr');
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, [
    'file' => new CURLFile('/tmp/audio.wav', 'audio/wav'),
    'language' => 'zh-CN'
]);
curl_setopt($ch, CURLOPT_HTTPHEADER, [
    'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...'
]);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$response = json_decode(curl_exec($ch), true);
$text = $response['result']['text'] ?? '';
// 清洗:去空格、句号、语气词
$text = preg_replace('/[。!?,、\s]+/', ' ', trim($text));
$text = preg_replace('/那个|呃|啊|嗯/', '', $text);

常见失败原因与绕过方式

调试时 90% 的问题卡在请求层,不是模型不理解,而是根本没送进去。

Uni-CourseHelper
Uni-CourseHelper

私人AI助教,高效学习工具

下载
  • 400 Bad Request:多数因 CURLFile 路径不存在或权限不足;用 is_readable() 先校验
  • 401 Unauthorized:token 过期或拼错前缀(必须是 Bearer ,注意空格)
  • 415 Unsupported Media Type:没传 Content-Type: multipart/form-data,但 cURL 自动加,真正原因是 CURLFile 构造失败退化为字符串,改用 curl_file_create() 更稳
  • 转写结果为空:确认 WAV 是 PCM 格式,可用 ffprobe /tmp/audio.wav 检查,非 PCM 用 ffmpeg -i in.mp3 -ar 16000 -ac 1 -f wav out.wav 转换

执行控制环节不能依赖出门问问模型做动作

出门问问 llm_chat 返回的是自然语言回复,不是结构化指令。它不会返回 {"action": "light", "state": "on"},而可能是“好的,已帮你打开客厅灯光”。你得自己写规则或微调小模型做 slot-filling,或者接 Intent Classification API(如 Dialogflow)做二次解析。

立即学习PHP免费学习笔记(深入)”;

  • 简单场景:用关键词 + 正则硬匹配,例如 preg_match('/(打开|关闭) (灯光|空调)/', $text, $m)
  • 中等场景:训练轻量级分类器(FastText),输入清洗后文本,输出 light_on / ac_off
  • 别把设备控制逻辑写在 PHP 接口里直连硬件——用消息队列(Redis Pub/Sub 或 RabbitMQ)解耦,PHP 只发指令,由独立服务处理 GPIO、MQTT 或 HTTP 设备 API

真正的难点不在调通 API,而在语音噪声、方言、语序混乱导致的转写偏差,以及用户说“它太热了”这种隐含指令——这些没法靠换 SDK 解决,得在语义层补规则或引入领域 NLU。

热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

通义千问
通义千问

阿里巴巴推出的全能AI助手

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

更多
rabbitmq和kafka有什么区别
rabbitmq和kafka有什么区别

rabbitmq和kafka的区别:1、语言与平台;2、消息传递模型;3、可靠性;4、性能与吞吐量;5、集群与负载均衡;6、消费模型;7、用途与场景;8、社区与生态系统;9、监控与管理;10、其他特性。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

206

2024.02.23

Java 消息队列与异步架构实战
Java 消息队列与异步架构实战

本专题系统讲解 Java 在消息队列与异步系统架构中的核心应用,涵盖消息队列基本原理、Kafka 与 RabbitMQ 的使用场景对比、生产者与消费者模型、消息可靠性与顺序性保障、重复消费与幂等处理,以及在高并发系统中的异步解耦设计。通过实战案例,帮助学习者掌握 使用 Java 构建高吞吐、高可靠异步消息系统的完整思路。

47

2026.01.28

curl_exec
curl_exec

curl_exec函数是PHP cURL函数列表中的一种,它的功能是执行一个cURL会话。给大家总结了一下php curl_exec函数的一些用法实例,这个函数应该在初始化一个cURL会话并且全部的选项都被设置后被调用。他的返回值成功时返回TRUE, 或者在失败时返回FALSE。

454

2023.06.14

linux常见下载安装工具
linux常见下载安装工具

linux常见下载安装工具有APT、YUM、DNF、Snapcraft、Flatpak、AppImage、Wget、Curl等。想了解更多linux常见下载安装工具相关内容,可以阅读本专题下面的文章。

183

2023.10.30

登录token无效
登录token无效

登录token无效解决方法:1、检查token的有效期限,如果token已经过期,需要重新获取一个新的token;2、检查token的签名,如果签名不正确,需要重新获取一个新的token;3、检查密钥的正确性,如果密钥不正确,需要重新获取一个新的token;4、使用HTTPS协议传输token,建议使用HTTPS协议进行传输 ;5、使用双因素认证,双因素认证可以提高账户的安全性。

6512

2023.09.14

登录token无效怎么办
登录token无效怎么办

登录token无效的解决办法有检查Token是否过期、检查Token是否正确、检查Token是否被篡改、检查Token是否与用户匹配、清除缓存或Cookie、检查网络连接和服务器状态、重新登录或请求新的Token、联系技术支持或开发人员等。本专题为大家提供token相关的文章、下载、课程内容,供大家免费下载体验。

840

2023.09.14

token怎么获取
token怎么获取

获取token值的方法:1、小程序调用“wx.login()”获取 临时登录凭证code,并回传到开发者服务器;2、开发者服务器以code换取,用户唯一标识openid和会话密钥“session_key”。想了解更详细的内容,可以阅读本专题下面的文章。

1088

2023.12.21

token什么意思
token什么意思

token是一种用于表示用户权限、记录交易信息、支付虚拟货币的数字货币。可以用来在特定的网络上进行交易,用来购买或出售特定的虚拟货币,也可以用来支付特定的服务费用。想了解更多token什么意思的相关内容可以访问本专题下面的文章。

1840

2024.03.01

PHP高性能API设计与Laravel服务架构实践
PHP高性能API设计与Laravel服务架构实践

本专题围绕 PHP 在现代 Web 后端开发中的高性能实践展开,重点讲解基于 Laravel 框架构建可扩展 API 服务的核心方法。内容涵盖路由与中间件机制、服务容器与依赖注入、接口版本管理、缓存策略设计以及队列异步处理方案。同时结合高并发场景,深入分析性能瓶颈定位与优化思路,帮助开发者构建稳定、高效、易维护的 PHP 后端服务体系。

4

2026.03.04

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
PHP自制框架
PHP自制框架

共8课时 | 0.6万人学习

PHP面向对象基础课程(更新中)
PHP面向对象基础课程(更新中)

共12课时 | 0.7万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号