本文介绍如何通过Object Table结合MaxCompute AI Function调用远程模型,实现语音内容提取。 上游业务系统将非结构化数据存储至OSS指定目录后,MaxCompute通过创建Object Table映射OSS中的文件,并支持全量或增量元数据抽取,获取文件的元信息。该方案无需将数据从OSS迁 移至MaxCompute,同时利用元信息提升MaxCompute SQL引擎在数据读取、文件过滤及分布式计算场景下的处理效率。在此基础上,通过SQL引擎结合AI Function调用多模态模型,读取Object Table中的数据,完成非结构化数据的处理与分析。
前提条件
开通MaxCompute并创建MaxCompute项目。如已完成可忽略。
已开通人工智能平台PAI模型在线服务(EAS)。如已完成可忽略。
已开通OSS服务。如已完成可忽略。
步骤一:创建OSS Bucket并上传数据
登录对象存储OSS控制台。
在 OSS 上创建名称为
ot-demo的Bucket,操作详情可参考OSS控制台快速入门。在新建的Bucket下新建目录
/object_table/voice_demo/并上传音频数据voice_demo.zip。
步骤二:创建并部署PAI EAS模型服务
登录PAI 控制台,左上角选择地域,创建工作空间。
进入工作空间详情页,点击左侧Model Gallery,选择
Qwen2.5-Omni-3B,点击部署。选择机型,选择一台L20 48G显存的机器,点击部署。可在任务管理中查看部署状态,部署完成后会显示运行中。
在左侧导航栏,单击模型部署模块,进入EAS查看已经部署的服务,点击查看调用信息,获取endpoint和token信息。
-- 后续步骤三创建远程模型时会用到如下信息。 模型名称(以实际EAS服务显示为主):quickstart_deploy_*****_apdf endpoint(VPC调用地址):http://*****.cn-beijing.pai-eas.aliyuncs.com(只取aliyuncs.com之前地址即可) apikey(Token):****************************************==
步骤三:创建Object Table
创建Object Table并查看元数据。
SET odps.sql.type.system.odps2=true;
SET odps.namespace.schema=true; -- 开启租户级Schema语法开关
CREATE OBJECT TABLE IF NOT EXISTS voice_demo
WITH SERDEPROPERTIES ('odps.properties.rolearn'='acs:ram::<uid>:role/aliyunodpsdefaultrole')
LOCATION 'oss://oss-cn-<region>-internal.aliyuncs.com/object-table/voice_demo/';
ALTER TABLE voice_demo REFRESH METADATA;
-- 刷新元数据后查询,可查到5个音频对象。
SET odps.namespace.schema=true;
SELECT COUNT(*) AS ROW_COUNT FROM voice_demo; 步骤四:创建VPC网络连接
登录MaxCompute控制台,在左上角选择地域。
在左侧导航栏,选择 。
创建MaxCompute与目标VPC网络间的网络连接。VPC ID可以是任意VPC,交换机可以是任意可用区。
步骤五:注册Omni多模态远程模型
若输入binary定义模型时,需要提供输入参数声明 INPUT(data BINARY, promt STRING)。
若输入string的url,可以使用默认值,不用声明输入参数。
语法参数详情可参考创建模型。
SET odps.namespace.schema=true;
SET odps.session.networklink=<your vpc name>;
CREATE MODEL PAI_EAS_Qwen25_Omni_3B WITH VERSION v1
OPTIONS(
MODEL_SOURCE_TYPE = 'REMOTE',
MODEL_TYPE = 'MLLM',
TASKS = 'text-generation',
PAI_EAS_MODEL_NAME = 'Qwen2.5-Omni-3B',
PAI_EAS_SERVICE_NAME = 'quickstart_deploy_*****',
ENDPOINT = 'https://*****.vpc.cn-beijing.pai-eas.aliyuncs.com/',
APIKEY = '*****==',
PAI_EAS_SYNC_MODE = 'true'
)
COMMENT "PAI EAS remote model";步骤六:使用AI_GENERATE函数处理语音数据
使用MaxCompute AI_GENERATE函数对语音数据进行文本提取和中文翻译。
SET odps.namespace.schema=true;
SET odps.mcqa.disable=true;
SET odps.session.networklink=<your vpc name>;
SELECT
key,
AI_GENERATE(
PAI_EAS_Qwen25_Omni_3B, v1, audio_url,
"把听到的内容输出,仅限于听到的信息,不输出额外信息",
"AUDIO"
) AS voice2text,
AI_GENERATE(
PAI_EAS_Qwen25_Omni_3B, v1, audio_url,
"请把听到的信息翻译成英文,不输出额外信息",
"AUDIO"
) AS voice2text2english
FROM (
SELECT GET_SIGNED_URL_FROM_OSS(
'<project name>.<schema>.voice_demo', key, 604800
) AS audio_url, key AS key
FROM <project name>.<schema>.voice_demo
);
+------+------------+--------------------+
| key | voice2text | voice2text2english |
+------+------------+--------------------+
| 3d111ad2-3708-492b-a99c-8621e852964d.wav | 听到的信息:教育改革措施需要更多时间来观察效果 | Educational reform measures require more time for observation and assessment of their effectiveness. |
| 3f46aaf1-7b70-4ac7-a3b1-f574ff884ac7.wav | 这家餐厅的服务态度很好,菜品也很美味,值得推荐。 | The service at this restaurant is very good, and the dishes are delicious. It is worth recommending. |
| b222aabf-7f2e-4909-b774-5e762eb75a0a.wav | 科技发展日新月异,人工智能改变生活。 | Technology is advancing rapidly, and artificial intelligence is revolutionizing our lives. |
| bbc84f7d-dcf6-45eb-a129-34df3ec9c612.wav | 今天天气真好,心情很不错,阳光明媚,适合出去散步。 | It's a beautiful day today—your mood is in great spirits; the sun shines beautifully, it is perfect for strolling around. |
| d8caf7ef-4489-403a-94e9-86d83bcf1966.wav | 环保意识需要进一步提高,保护我们的地球家园。 | Environmental awareness needs to be further enhanced to protect our homelands. |
+------+------------+--------------------+