文档

智能纪要

更新时间:

本文主要介绍智能纪要的AI能力和实现方式。智能纪要功能基于多种AI模型和算法,用以从原音视频文件或实时会议中提炼出多种类型的结果,包括关键词提取、重点内容、待办事项、场景类型识别。

请求参数

参数名

类型

是否必填

说明

MeetingAssistanceEnabled

boolean

默认为false

MeetingAssistance

list[]

默认为空,您可按需添加需要处理的算法类型;当前支持:

  • Actions : 待办事项

  • KeyInformation : 关键信息(含关键词和重点内容)

注意:

  • 若您只设置了MeetingAssistanceEnabled=true,但没有添加任何算法类型,则该功能模型处理所有算法模型,也即Actions和KeyInformation。

  • 若您只关注其中之一,比如只需要待办事项的输出,则开启MeetingAssistanceEnabled后,只需添加Actions即可。

示例设置

{
    "Input":{
        ...
    },
    "Parameters":{
        ...
        "MeetingAssistanceEnabled":true,
        "MeetingAssistance":{
            "Types":[
                "Actions",
                "KeyInformation"
            ]
        },
        ...
    }
}

代码示例

#!/usr/bin/env python
#coding=utf-8

import os
import json
import datetime
from aliyunsdkcore.client import AcsClient
from aliyunsdkcore.request import CommonRequest
from aliyunsdkcore.auth.credentials import AccessKeyCredential

def create_common_request(domain, version, protocolType, method, uri):
    request = CommonRequest()
    request.set_accept_format('json')
    request.set_domain(domain)
    request.set_version(version)
    request.set_protocol_type(protocolType)
    request.set_method(method)
    request.set_uri_pattern(uri)
    request.add_header('Content-Type', 'application/json')
    return request

def init_parameters():
    root = dict()
    root['AppKey'] = '输入您在听悟管控台创建的Appkey'

    # 基本请求参数
    input = dict()
    input['SourceLanguage'] = 'cn'
    input['TaskKey'] = 'task' + datetime.datetime.now().strftime('%Y%m%d%H%M%S')
    input['FileUrl'] = '输入待测试的音频url链接'
    root['Input'] = input

    # AI相关参数,按需设置即可
    parameters = dict()
    # 智能纪要
    parameters['MeetingAssistanceEnabled'] = True
    meetingAssistance = dict()
    meetingAssistance['Types'] = ['Actions', 'KeyInformation']
    parameters['MeetingAssistance'] = meetingAssistance
    root['Parameters'] = parameters
    return root

body = init_parameters()
print(body)

# TODO  请通过环境变量设置您的 AccessKeyId 和 AccessKeySecret
credentials = AccessKeyCredential(os.environ['ALIBABA_CLOUD_ACCESS_KEY_ID'], os.environ['ALIBABA_CLOUD_ACCESS_KEY_SECRET'])
client = AcsClient(region_id='cn-beijing', credential=credentials)

request = create_common_request('tingwu.cn-beijing.aliyuncs.com', '2023-09-30', 'https', 'PUT', '/openapi/tingwu/v2/tasks')
request.add_query_param('type', 'offline')

request.set_content(json.dumps(body).encode('utf-8'))
response = client.do_action_with_exception(request)
print("response: \n" + json.dumps(json.loads(response), indent=4, ensure_ascii=False))
package com.alibaba.tingwu.client.demo.aitest;

import com.alibaba.fastjson.JSONObject;
import com.aliyuncs.CommonRequest;
import com.aliyuncs.CommonResponse;
import com.aliyuncs.DefaultAcsClient;
import com.aliyuncs.IAcsClient;
import com.aliyuncs.exceptions.ClientException;
import com.aliyuncs.http.FormatType;
import com.aliyuncs.http.MethodType;
import com.aliyuncs.http.ProtocolType;
import com.aliyuncs.profile.DefaultProfile;
import org.junit.Test;

/**
 * @author tingwu2023
 */
public class MeetingAssistanceTest {

    @Test
    public void testMeetingAssistance() throws ClientException {
        CommonRequest request = createCommonRequest("tingwu.cn-beijing.aliyuncs.com", "2023-09-30", ProtocolType.HTTPS, MethodType.PUT, "/openapi/tingwu/v2/tasks");
        request.putQueryParameter("type", "offline");

        JSONObject root = new JSONObject();
        root.put("AppKey", "输入您在听悟管控台创建的Appkey");

        JSONObject input = new JSONObject();
        input.fluentPut("FileUrl", "输入待测试的音频url链接")
                .fluentPut("SourceLanguage", "cn")
                .fluentPut("TaskKey", "task" + System.currentTimeMillis());
        root.put("Input", input);

        JSONObject parameters = new JSONObject();
        parameters.put("MeetingAssistanceEnabled", true);
      	JSONObject meetingAssistance = new JSONObject();
        JSONArray mTypes = new JSONArray().fluentAdd("Actions").fluentAdd("Information");
        meetingAssistance.put("Types", mTypes);
        parameters.put("MeetingAssistance", meetingAssistance);
        root.put("Parameters", parameters);
        System.out.println(root.toJSONString());
        request.setHttpContent(root.toJSONString().getBytes(), "utf-8", FormatType.JSON);

        // TODO 请通过环境变量设置您的AccessKeyId、AccessKeySecret
        DefaultProfile profile = DefaultProfile.getProfile("cn-beijing", System.getenv("ALIBABA_CLOUD_ACCESS_KEY_ID"), System.getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET"));
        IAcsClient client = new DefaultAcsClient(profile);
        CommonResponse response = client.getCommonResponse(request);
        System.out.println(response.getData());
    }
    public static CommonRequest createCommonRequest(String domain, String version, ProtocolType protocolType, MethodType method, String uri) {
        // 创建API请求并设置参数
        CommonRequest request = new CommonRequest();
        request.setSysDomain(domain);
        request.setSysVersion(version);
        request.setSysProtocol(protocolType);
        request.setSysMethod(method);
        request.setSysUriPattern(uri);
        request.setHttpContentType(FormatType.JSON);
        return request;
    }
}

示例输出

{
    "Code":"0",
    "Data":{
        "TaskId":"8b78c180e0994e9097e9135*********",
        "TaskStatus":"COMPLETED",
        "Result":{
            "MeetingAssistance":"http://speech-swap-hangzhou.oss-cn-hangzhou.aliyuncs.com/tingwu/output/1503864348104017/8b78c180e0994e9097e913577ecba19b/8b78c180e0994e9097e913577ecba19b_MeetingAssistance_20231029212015.json?Expires=1698672195&OSSAccessKeyId=LTAI4G4uXHLPwQHj********&Signature=********ZkK%2BC%2FS%2F0Fl9r35s%2Ffc%3D",
            "Transcription":"http://speech-swap-hangzhou.oss-cn-hangzhou.aliyuncs.com/tingwu/output/1503864348104017/8b78c180e0994e9097e913577ecba19b/8b78c180e0994e9097e913577ecba19b_Transcription_20231029212000.json?Expires=1698672195&OSSAccessKeyId=LTAI4G4uXHLPwQHj********&Signature=********k5QRCL%2BTCfwF2Zrb0%3D"
        }
    },
    "Message":"success",
    "RequestId":"784E7780-E6EB-1F55-A3R9-23*********"
}

其中MeetingAssistance字段对应的即为章节速览结果的http url下载链接。

协议解析

上述输出中的智能纪要结果url中的内容为JSON格式的报文,示例如下所示。

{
    "TaskId":"8b78c180e034fe9097e9135s7ebba1fa",
    "MeetingAssistance":{
        "Keywords":[
            "达摩院",
            "阿里巴巴",   
            "语音"
        ],
        "KeySentences":[
            {
                "Id":1,
                "SentenceId":1,
                "Start":31680,
                "End":36582,
                "Text":"首先我介绍一下我们的工作和岗位的要求。"
            },
            {
                "Id":2,
                "SentenceId":45,
                "Start":1452950,
                "End":1462184,
                "Text":"公司主要做的是语音,来自语音实验室,主要做语音转文字和语音相关的云服务。"
            }
        ],
        "Actions":[
            {
                "Id":1,
                "SentenceId":8,
                "Start":39654,
                "End":52117,
                "Text":"确认PPT模板中的内容是否有问题"
            },
            {
                "Id":2,
                "SentenceId":18,
                "Start":84693,
                "End":86786,
                "Text":"关注通力听悟公共云试用情况和即将发布情况"
            }
        ],
        "Classifications":{
            "Interview":0.6549709,
            "Lecture":0.18346232,
            "Meeting":0.16156682
        }
    }
}

具体字段定义如下。

参数名

类型

说明

TaskId

string

创建任务时生成的TaskId。

MeetingAssistance

object

智能纪要结果对象,可能包含0个或多个不同类型的结果。

MeetingAssistance.Keywords

list[]

关键词提取结果。

MeetingAssistance.KeySentences

list[]

关键句提取结果,也称为重点内容。

MeetingAssistance.KeySentences[i].Id

long

关键句序号。

MeetingAssistance.KeySentences[i].SentenceId

long

该关键句在原ASR转写中对应的句子Id。

MeetingAssistance.KeySentences[i].Start

long

相对于音频起始时间的开始时间,相对时间戳,单位毫秒。

MeetingAssistance.KeySentences[i].End

long

相对于音频起始时间的结束时间,相对时间戳,单位毫秒。

MeetingAssistance.KeySentences[i].Text

string

关键句信息。

MeetingAssistance.Actions

list[]

待办内容、待办摘要的集合。

MeetingAssistance.Actions[i].Id

long

待办序号。

MeetingAssistance.Actions[i].SentenceId

long

该关键句在原ASR转写中对应的句子Id。

MeetingAssistance.Actions[i].Start

long

相对于音频起始时间的开始时间,相对时间戳,单位毫秒。

MeetingAssistance.Actions[i].End

long

相对于音频起始时间的结束时间,相对时间戳,单位毫秒。

MeetingAssistance.Actions[i].Text

string

待办内容。

MeetingAssistance.Classifications

object

场景分类,目前只有3种场景分类。

MeetingAssistance.Classifications.Interview

float

面试场景置信度得分。

MeetingAssistance.Classifications.Lecture

float

演讲场景置信度得分。

MeetingAssistance.Classifications.Meeting

float

会议场景置信度得分。

常见问题

智能纪要功能在什么场景下可以调用?

  • 您可以在创建音视频文件离线转写或创建实时会议时,直接设置;

  • 您也可以在离线转写或实时会议结束后,再次发起重跑任务请求(必须基于同一个TaskId),生成章节信息。

为什么我调用后没有生成智能纪要的结果,或结果为空?

  • 一个可能是调用参数没有启用或设置不正确,请您仔细参考开发文档进行对比并正确设置。

  • 一个可能是您设置的语言模型并不支持生成智能纪要信息,比如若音视频文件是日语,当前是不支持的。

  • 另外一个可能是音视频文件的信息不够丰富,比如音视频文件转写后的ASR信息太少(可能是背景噪音过多或过差),导致模型无法生成章节信息。此时您可以更换一条涵盖有效信息更丰富的音视频文件进行测试。

为什么生成的智能纪要没有重点内容或待办事项的结果?

  • 虽然智能纪要会产生多种类型的结果,但并不保证一定会全部生成全部类型结果,比如转写出的有效信息过少时,可能只有关键词结果(甚至也没有)而没有重点事项结果, 即使信息足够多,但没有提炼出有效待办事项的话,那么待办结果也是可能不生成的。

  • 本页导读 (0)
文档反馈