要點提煉(待辦事項、關(guān)鍵詞、重點內(nèi)容)
本文主要介紹要點提煉AI能力和實現(xiàn)方式。要點提煉功能基于多種AI模型和算法,用以從原音視頻文件或?qū)崟r會議中提煉出多種類型的結(jié)果,包括關(guān)鍵詞、重點內(nèi)容、待辦事項、場景類型識別。
請求參數(shù)
參數(shù)名 | 類型 | 是否必填 | 說明 |
MeetingAssistanceEnabled | boolean | 否 | 默認為false |
MeetingAssistance | list[] | 否 | 默認為空,您可按需添加需要處理的算法類型;當前支持:
|
注意:
若您只設(shè)置了MeetingAssistanceEnabled=true,但沒有添加任何算法類型,則該功能模型處理所有算法模型,也即Actions和KeyInformation。
若您只關(guān)注其中之一,比如只需要待辦事項的輸出,則開啟MeetingAssistanceEnabled后,只需添加Actions即可。
示例設(shè)置
{
"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'] = '輸入您在聽悟管控臺創(chuàng)建的Appkey'
# 基本請求參數(shù)
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相關(guān)參數(shù),按需設(shè)置即可
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 請通過環(huán)境變量設(shè)置您的 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", "輸入您在聽悟管控臺創(chuàng)建的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 請通過環(huán)境變量設(shè)置您的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) {
// 創(chuàng)建API請求并設(shè)置參數(shù)
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字段對應(yīng)的即為章節(jié)速覽結(jié)果的http url下載鏈接。
協(xié)議解析
上述輸出中的要點提煉結(jié)果url中的內(nèi)容為JSON格式的報文,示例如下所示。
{
"TaskId":"8b78c180e034fe9097e9135s7ebba1fa",
"MeetingAssistance":{
"Keywords":[
"達摩院",
"阿里巴巴",
"語音"
],
"KeySentences":[
{
"Id":1,
"SentenceId":1,
"Start":31680,
"End":36582,
"Text":"首先我介紹一下我們的工作和崗位的要求。"
},
{
"Id":2,
"SentenceId":45,
"Start":1452950,
"End":1462184,
"Text":"公司主要做的是語音,來自語音實驗室,主要做語音轉(zhuǎn)文字和語音相關(guān)的云服務(wù)。"
}
],
"Actions":[
{
"Id":1,
"SentenceId":8,
"Start":39654,
"End":52117,
"Text":"確認PPT模板中的內(nèi)容是否有問題"
},
{
"Id":2,
"SentenceId":18,
"Start":84693,
"End":86786,
"Text":"關(guān)注通力聽悟公共云試用情況和即將發(fā)布情況"
}
],
"Classifications":{
"Interview":0.6549709,
"Lecture":0.18346232,
"Meeting":0.16156682
}
}
}
具體字段定義如下。
參數(shù)名 | 類型 | 說明 |
TaskId | string | 創(chuàng)建任務(wù)時生成的TaskId。 |
MeetingAssistance | object | 要點提煉結(jié)果對象,可能包含0個或多個不同類型的結(jié)果。 |
MeetingAssistance.Keywords | list[] | 關(guān)鍵詞提取結(jié)果。 |
MeetingAssistance.KeySentences | list[] | 關(guān)鍵句提取結(jié)果,也稱為重點內(nèi)容。 |
MeetingAssistance.KeySentences[i].Id | long | 關(guān)鍵句序號。 |
MeetingAssistance.KeySentences[i].SentenceId | long | 該關(guān)鍵句在原ASR轉(zhuǎn)寫中對應(yīng)的句子Id。 |
MeetingAssistance.KeySentences[i].Start | long | 相對于音頻起始時間的開始時間,相對時間戳,單位毫秒。 |
MeetingAssistance.KeySentences[i].End | long | 相對于音頻起始時間的結(jié)束時間,相對時間戳,單位毫秒。 |
MeetingAssistance.KeySentences[i].Text | string | 關(guān)鍵句信息。 |
MeetingAssistance.Actions | list[] | 待辦內(nèi)容、待辦摘要的集合。 |
MeetingAssistance.Actions[i].Id | long | 待辦序號。 |
MeetingAssistance.Actions[i].SentenceId | long | 該關(guān)鍵句在原ASR轉(zhuǎn)寫中對應(yīng)的句子Id。 |
MeetingAssistance.Actions[i].Start | long | 相對于音頻起始時間的開始時間,相對時間戳,單位毫秒。 |
MeetingAssistance.Actions[i].End | long | 相對于音頻起始時間的結(jié)束時間,相對時間戳,單位毫秒。 |
MeetingAssistance.Actions[i].Text | string | 待辦內(nèi)容。 |
MeetingAssistance.Classifications | object | 場景識別分類,目前只有3種場景分類。 |
MeetingAssistance.Classifications.Interview | float | 面試場景置信度得分。 |
MeetingAssistance.Classifications.Lecture | float | 演講場景置信度得分。 |
MeetingAssistance.Classifications.Meeting | float | 會議場景置信度得分。 |
常見問題
要點提煉功能在什么場景下可以調(diào)用?
您可以在創(chuàng)建音視頻文件離線轉(zhuǎn)寫或創(chuàng)建實時會議時,直接設(shè)置;
您也可以在離線轉(zhuǎn)寫或?qū)崟r會議結(jié)束后,再次發(fā)起重跑任務(wù)請求(必須基于同一個TaskId),生成章節(jié)信息。
為什么我調(diào)用后沒有生成要點提煉的結(jié)果,或結(jié)果為空?
一個可能是調(diào)用參數(shù)沒有啟用或設(shè)置不正確,請您仔細參考開發(fā)文檔進行對比并正確設(shè)置。
一個可能是您設(shè)置的語言模型并不支持生成要點提煉信息,比如音視頻文件是日語,當前是不支持的。
另外一個可能是音視頻文件的信息不夠豐富,比如音視頻文件轉(zhuǎn)寫后的ASR信息太少(可能是背景噪音過多或過差),導(dǎo)致模型無法生成章節(jié)信息。此時您可以更換一條涵蓋有效信息更豐富的音視頻文件進行測試。
為什么生成的要點提煉沒有重點內(nèi)容或待辦事項的結(jié)果?
雖然要點提煉會產(chǎn)生多種類型的結(jié)果,但并不保證一定會全部生成全部類型結(jié)果,比如轉(zhuǎn)寫出的有效信息過少時,可能只有關(guān)鍵詞結(jié)果(甚至也沒有)而沒有重點事項結(jié)果, 即使信息足夠多,但沒有提煉出有效待辦事項的話,那么待辦結(jié)果也是可能不生成的。