文档

开发指南

更新时间:

本文介绍实时记录音视频文件记录接入流程。

说明

如果您需要咨询更多产品技术问题,欢迎通过钉钉搜索群号44604776,加入通义听悟咨询群联系我们。

实时记录

使用须知

  • 支持的输入格式:PCM(无压缩的PCM或WAV文件)、16 bit采样位数、单声道(mono)。

  • 支持的音频采样率:16000 Hz、8000Hz。

  • 支持的单次会议时长:24小时。

  • 支持设置返回结果:是否返回中间识别结果。

  • 支持设置多语言识别:中文、英文、粤语、中英自由说(长段中英混)。

  • 支持设置开启翻译:翻译目标语言为中文、英文、中文&英文,支持会中开启或关闭。

  • 支持设置同步音频转码:转码为比特率128kb/s的mp3格式音频,准实时写入的指定OSS。

  • 支持设置会后纪要智能提取:是否开启有效音频片断检测,是否开启会中识别结果保存,智能提取关键词、关键句、小议题、待办事项。

交互流程

image

实时记录

步骤1:调用CreateMeetingTrans接口创建实时记录,对应交互流程1-2。

说明

转写的管理粒度为会议,在完成会议创建后便可基于该会议体验会中实时语音推流转写。

步骤2:调用GetMeetingTrans接口查询实时记录状态,对应交互流程18-19。

步骤3:调用StopMeetingTrans接口结束实时记录,对应交互流程20-22。

说明

结束记录后会进行智能纪要提取,并在完成时进行结果通知

实时记录语音推流

在完成记录创建后,便可通过听悟提供的语音推流Java SDK/C++ SDK进行会中实时语音推流并接收识别结果。

步骤1:建立推流通道,对应交互流程3-5。

步骤2:推送识别语音,对应交互流程6、8、10、12。

  • 线下会议时:单路语音,推流输入格式为PCM。

  • 在线会议时:多路语音,创建会议时设置了参数AudioPackagemulti时,基于听悟约定的Protobuf格式封装多路音频,封装协议如下:

syntax = "proto3";

message MultiAudioFrame {
    int32 frame_size = 1; // 数据包音频时长,单位毫秒
    bytes mixed_data = 2; // 混音数据包,pcm格式
    repeated ActiveAudioFrame active_frame = 3; // 活跃通道数据
    int64 send_time = 4; // 数据包发送时间戳,单位毫秒
}

message ActiveAudioFrame {
    bytes data = 2; // 发言人数据包,pcm格式
    string speaker_id = 3; // 业务方发言人id标识
}

步骤3:接收识别结果,对应交互流程7、9、11、13。

客户端循环发送语音数据,持续接收识别结果:

  • 句子开始事件(SentenceBegin)

句子开始事件表示服务端检测到了一句话的开始,听悟服务的智能断句功能会判断出一句话的开始与结束,示例如下。

{
	  "header": {
        "namespace": "SpeechTranscriber",
        "name": "SentenceBegin",
        "status": 20000000,
        "message_id": "a426f3d4618447519c9d85d1a0d1****",
        "task_id": "5ec521b5aa104e3abccf3d361822****",
        "status_text": "Gateway:SUCCESS:Success."
    },
    "payload": {
        "index": 0,
        "time": 0,
        "speaker_id": "用户1"
    }
}

对象参数说明:

参数

类型

说明

header

Object

返回结果头信息。

namespace

String

消息所属的命名空间,固定为:SpeechTranscriber。

name

String

消息名称,SentenceBegin表示一个句子的开始。

task_id

String

推流任务全局唯一ID,请记录该值,便于排查问题。

message_id

String

本次消息的ID。

status

Integer

状态码,表示请求是否成功,见服务状态码

status_text

String

状态消息。

payload

Object

返回结果。

index

Integer

句子编号,从0开始递增。

time

Integer

当前已处理的音频时长,单位是毫秒。

speaker_id

String

识别结果对应的说话人,单路识别和混音识别时不返回。

  • 句中识别结果变化事件(TranscriptionResultChanged)

句中识别结果变化事件表示识别结果发生了变化,示例如下。

{
    "header": {
        "namespace": "SpeechTranscriber",
        "name": "TranscriptionResultChanged",
        "status": 20000000,
        "message_id": "dc21193fada84380a3b6137875ab****",
        "task_id": "5ec521b5aa104e3abccf3d361822****",
        "status_text": "Gateway:SUCCESS:Success."
    },
    "payload": {
        "index": 0,
        "time": 1835,
        "result": "北京的天",
        "words": [
            {
                "text": "北京",
                "startTime": 630,
                "endTime": 930
    	      },
            {
                "text": "的",
                "startTime": 930,
                "endTime": 1110
            },
            {
                "text": "天",
                "startTime": 1110,
                "endTime": 1140
            }
        ],
        "speaker_id": "用户1"
    }
} 

对象参数说明:

参数

类型

说明

header

Object

返回结果头信息。

namespace

String

消息所属的命名空间,固定为:SpeechTranscriber。

name

String

消息名称,TranscriptionResultChanged表示句中识别结果变化。

task_id

String

推流任务全局唯一ID,请记录该值,便于排查问题。

message_id

String

本次消息的ID。

status

Integer

状态码,表示请求是否成功,见服务状态码

status_text

String

状态消息。

payload

Object

返回结果。

index

Integer

句子编号,从0开始递增。

time

Integer

当前已处理的音频时长,单位是毫秒。

result

String

当前句子的识别结果。

words

List<Object>

当前句子的词信息。

text

String

文本。

startTime

Integer

词开始时间,单位为毫秒。

endTime

Integer

词结束时间,单位为毫秒。

speaker_id

String

识别结果对应的说话人,单路识别和混音识别时不返回。

  • 句子结束事件(SentenceEnd)

句子结束事件表示服务端检测到了一句话的结束,并附带返回该句话的识别结果,示例如下。

{
    "header": {
        "namespace": "SpeechTranscriber",
        "name": "SentenceEnd",
        "status": 20000000,
        "message_id": "c3a9ae4b231649d5ae05d4af36fd****",
        "task_id": "5ec521b5aa104e3abccf3d361822****",
        "status_text": "Gateway:SUCCESS:Success."
    },
    "payload": {
        "index": 0,
        "time": 1820,
        "begin_time": 0,
        "result": "北京的天气。",
        "words": [
            {
                "text": "北京",
                "startTime": 630,
                "endTime": 930
            },
            {
                "text": "的",
                "startTime": 930,
                "endTime": 1110
            },
            {
                "text": "天气",
                "startTime": 1110,
                "endTime": 1380
            }
        ],
        "speaker_id": "用户1"
    }
}

对象参数说明:

参数

类型

说明

header

Object

返回结果头信息。

namespace

String

消息所属的命名空间,固定为:SpeechTranscriber。

name

String

消息名称,SentenceEnd表示句子结束。

task_id

String

推流任务全局唯一ID,请记录该值,便于排查问题。

message_id

String

本次消息的ID。

status

Integer

状态码,表示请求是否成功,见服务状态码

status_text

String

状态消息。

payload

Object

返回结果。

index

Integer

句子编号,从0开始递增。

time

Integer

当前已处理的音频时长,单位是毫秒。

result

String

当前句子的识别结果。

words

List<Object>

当前句子的词信息。

text

String

文本。

startTime

Integer

词开始时间,单位为毫秒。

endTime

Integer

词结束时间,单位为毫秒。

speaker_id

String

识别结果对应的说话人,单路识别和混音识别时不返回。

  • 识别结果翻译事件(ResultTranslated)

识别结果翻译事件表示在开启翻译时服务端检测到识别结果并进行目标语言文本翻译,示例如下。

{
    "header": {
        "namespace": "SpeechTranscriber",
        "name": "ResultTranslated",
        "status": 20000000,
        "message_id": "c3a9ae4b231649d5ae05d4af36fd****",
        "task_id": "5ec521b5aa104e3abccf3d361822****",
        "status_text": "Gateway:SUCCESS:Success."
      	"source_message_id": "d4a9ae4b231649d5ae05d4af36fd****",
    },
    "payload": {
      	"speaker_id": "xxx",
        "source_lang": "cn",
        "target_lang": "en",
        "translate_result": [
          {
            "text": "At that time.",
            "index": 110,
            "beginTime": 123000,
            "endTime": 125000
          },
          {
            "text": "xxx",
            "index": 111,
            "partial": true
          }
        ]
    }
}

对象参数说明:

参数

类型

说明

header

Object

返回结果头信息。

namespace

String

消息所属的命名空间,固定为:SpeechTranscriber。

name

String

消息名称,ResultTranslated表示识别结果翻译。

task_id

String

推流任务全局唯一ID,请记录该值,便于排查问题。

message_id

String

本次消息的ID。

source_message_id

String

本次翻译的源识别结果消息ID。

status

Integer

状态码,表示请求是否成功,见服务状态码

status_text

String

状态消息。

payload

Object

返回结果。

speaker_id

String

识别结果对应的说话人标识,同推流pb传入;无此字段时表示单通道识别或混音流识别的翻译。

source_lang

String

翻译的源语言。

target_lang

String

翻译的目标语言。

translate_result

List<Object>

识别结果翻译信息。

text

String

翻译后的文本。

index

Integer

翻译句子编号,从0开始递增。

partial

Boolean

为true时对应非SentenceEnd的识别内容的翻译结果。

beginTime

Integer

翻译句子的开始时间,单位为毫秒,在翻译SentenceEnd识别结果时会返回。

endTime

Integer

翻译句子的结束时间,单位为毫秒,在翻译SentenceEnd识别结果时会返回。

  • 记录中更新配置的Ack响应事件(UpdateConfigAck)

客户端发送UpdateConfig指令后听悟服务端会返回该指令的Ack消息,示例如下。

{
	  "header": {
        "namespace": "SpeechTranscriber",
        "name": "UpdateConfigAck",
        "status": 20000000,
        "message_id": "a426f3d4618447519c9d85d1a0d1****",
        "task_id": "5ec521b5aa104e3abccf3d361822****",
        "status_text": "Success."
    },
    "payload": {
        "instruction_id": "9d139c48057ee287e0efe7e*****",
        "error_code": "***",
        "error_message": "***"
    }
}

对象参数说明:

参数

类型

说明

header

Object

返回结果头信息。

namespace

String

消息所属的命名空间,固定为:SpeechTranscriber。

name

String

消息名称,SentenceBegin表示一个句子的开始。

task_id

String

推流任务全局唯一ID,请记录该值,便于排查问题。

message_id

String

本次消息的ID。

status

Integer

状态码,表示请求是否成功,见服务状态码

status_text

String

状态消息。

payload

Object

返回结果。

instruction_id

String

指令ID,会原样返回会中发送的UpdateConfig指令中的instruction_id。

error_code

String

会中发送的UpdateConfig指令参数异常时该字段会返回错误码。

error_message

String

会中发送的UpdateConfig指令参数异常时该字段会返回错误描述。

步骤4:暂停推流识别,对应交互流程14-15。

  • 结束识别完成事件

参数

类型

说明

header

Object

返回结果头信息。

namespace

String

消息所属的命名空间,固定为:SpeechTranscriber。

name

String

消息名称,TranscriptionCompleted表示此次推流识别完成,TaskFailed表示此次推流识别异常中断。

task_id

String

推流任务全局唯一ID,请记录该值,便于排查问题。

message_id

String

本次消息的ID。

status

Integer

状态码,表示请求是否成功,见服务状态码

status_text

String

状态消息。

payload

Object

返回结果。

步骤5:继续推流识别,对应交互流程16-17。

  • 如在创建会议时设置MeetingResultEnabledtrue,再次识别会基于已转码的音频推算出继续识别时的会议时间偏移。

  • 如在创建会议时设置MeetingResultEnabledfalse,需要在开始推送识别语音前,通过参数tw_time_offset设置继续识别的会议时间偏移(单位毫秒)。

结果通知

步骤1:接收记录后任务处理事件通知:对应交互流程23。

在创建会议设置MeetingResultEnabled为true时,通过在控制台配置的项目回调地址,接收任务状态变更事件,数据格式如下:

参数

类型

说明

Code

String

状态码。

Message

String

状态说明。

Data

Object

结果对象。

MeetingId

String

会议ID。

MeetingStatus

String

会议状态。

NEW:新会议。

ONGOING:会议转写中。

PAUSED:会议转写暂停。

PRE_COMPLETE:会议转写结束后,进行会后智能提取。

COMPLETED:会议完成。

FAILED:会议转写结束后,会后智能提取失败。

INVALID:无效会议。

MeetingKey

String

用户创建会议时设置的会议标识。

步骤2:查看记录后智能纪要结果。

在创建会议设置MeetingResultEnabled为true时,通过CreateMeetingTrans接口调用中设置的MeetingResultOssPath地址获取任务处理结果,JSON格式数据结构如下:

参数

类型

说明

MeetingId

String

会议ID。

MeetingKey

String

用户创建会议时设置的会议标识。

AudioDuration

Integer

转写音频时长,单位毫秒。

KeywordLabResults

List<Object>

智能提取的关键词详细信息。KeywordLabResults中的Object详细结构下文(1)有详细说明。

KeySentenceLabResults

List<Object>

智能提取的关键句详细信息。KeySentenceLabResults中的Object详细结构下文(2)有详细说明。

TopicLabResults

List<Object>

智能提取的小议题详细信息。TopicLabResults中的Object详细结构下文(3)有详细说明。

ActionLabResults

List<Object>

智能提取的待办事项详细信息。ActionLabResults中的Object详细结构下文(4)有详细说明。

KeywordSimpleLabResults

List<Object>

智能提取的关键词概览信息。是比较简洁的关键词列表。比KeywordLabResults中的内容更简洁。

KeywordSimpleLabResults中的Object详细结构下文(1)有详细说明。

AudioSegments

List<List<Integer>>

有效音频片断范围,示例:

[

[480,4410], // 480ms-4410ms区间为有效音频片断

[4930,9830], // 4930ms-9830ms区间为有效音频片断

......

]

DocResult

Object

音转文结果。

sc

List<Object>

segment content,片断数组。

tc

String

片断文本,词级别。

id

Integer

片断ID。

si

Integer

片断句子ID序号。

bt

Integer

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

et

Integer

片断末尾相对音频的时间戳,单位毫秒。

ui

String

用户ID。

(1)KeywordLabResults和KeywordSimpleLabResults中的Object数据结构如下:

参数

类型

说明

value

String

关键词内容。

(2)KeySentenceLabResults和TopicLabResults.titleKeySentences中的Object数据结构如下:

参数

类型

说明

value

String

关键句内容。

bt

Integer

关键句开始相对音频的时间戳,单位毫秒。

et

Integer

关键句结束相对音频的时间戳,单位毫秒。

si

List<Integer>

关键句关联的句子ID序号。

(3)TopicLabResults中的Object数据结构如下:

参数

类型

说明

value

String

小议题内容。

bt

Integer

小议题开始相对音频的时间戳,单位毫秒。

et

Integer

小议题结束相对音频的时间戳,单位毫秒。

si

List<Integer>

小议题关联的句子ID序号。第一个值是开始句子的ID,第二个值是结束句子的ID。

topicId

Integer

小议题的序号

titleKeySentences

List<Object>

小议题关联的关键句列表。titleKeySentences中的Object详细结构上文(2)有详细说明。

qaPairs

List<Object>

一个议题中,qa问答对的列表。

qaPairs中的Object详细结构下文(5)有详细说明。

(4)ActionLabResults中的Object数据结构如下:

参数

类型

说明

value

String

待办事项内容。

bt

Integer

待办事项开始相对音频的时间戳,单位毫秒。

et

Integer

待办事项结束相对音频的时间戳,单位毫秒。

si

List<Integer>

待办事项关联的句子ID序号。

(5)qaPairs中的Object数据结构如下:

参数

类型

说明

questionSentenceIds

List<Integer>

表示qa问答中问题(question)的句子ID列表。

answerSentenceIds

List<Integer>

表示qa问答中回答(answer)的句子ID列表。

音视频文件记录

使用须知

  • 支持的音频格式:mp3、wav、m4a、wma、aac、ogg、amr、flac、mp4。

  • 文件大小不超过4GB。

  • 音频时长不超过4小时。

  • 音频采样率8K/16K/24K/48K。

  • 需要识别的录音文件必须存放在用户托管到听悟的OSS Bucket上。

  • 支持的调用方式:轮询方式和回调方式。

  • 支持设置多语言识别:中文、英文、粤语、中英自由说(长段中英混)。

交互流程

image

任务管理

步骤1:调用CreateFileTrans - 创建文件转写任务接口创建文件记录任务,对应交互流程3-4。

步骤2:调用GetFileTrans接口查询文件记录任务状态,对应交互流程5-6。

结果通知

步骤1:接收任务处理事件通知:对应交互流程10。

通过"控制台-创建项目-回调方式"配置的项目回调地址接收转写完成事件,数据格式如下:

参数

类型

说明

Code

String

状态码。

Message

String

状态说明。

Data

Object

返回对象。

TransId

String

任务ID。

TransStatus

String

任务状态。

ONGOING:任务进行中。

COMPLETED:任务完成。

FAILED:任务失败

INVALID:无效任务。

TransKey

String

用户创建任务时设置的任务标识。

步骤2:查看任务处理结果,对应交互流程11-12。

CreateFileTrans接口调用中设置的TransResultOssPath地址获取任务处理结果,JSON格式数据结构如下:

参数

类型

说明

TransId

String

转写ID。

TransKey

String

转写标识,同入参。

AudioSize

Integer

文件大小,单位字节。

AudioDuration

Integer

转写音频时长,单位毫秒。

DocResult

Object

音转文结果。

pg

List<Object>

段落数组。

pi

String

paragraph id, 段落ID。

ui

String

用户ID。

sc

List<Object>

segment content,片断数组。

tc

String

片断文本,词级别。

id

Integer

片断ID。

si

Integer

片断句子ID序号。

bt

Integer

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

et

Integer

片断末尾相对音频的时间戳,单位毫秒。

KeywordLabResults

List<Object>

智能提取的关键词详细信息。KeywordLabResults中的Object详细结构下文(1)有详细说明。

KeySentenceLabResults

List<Object>

智能提取的关键句详细信息。KeySentenceLabResults中的Object详细结构下文(2)有详细说明。

TopicLabResults

List<Object>

智能提取的小议题详细信息。TopicLabResults中的Object详细结构下文(3)有详细说明。

ActionLabResults

List<Object>

智能提取的待办事项详细信息。ActionLabResults中的Object详细结构下文(4)有详细说明。

KeywordSimpleLabResults

List<Object>

智能提取的关键词概览信息。是比较简洁的关键词列表。比KeywordLabResults中的内容更简洁。

KeywordSimpleLabResults中的Object详细结构下文(1)有详细说明。

(1)KeywordLabResults和KeywordSimpleLabResults中的Object数据结构如下:

参数

类型

说明

value

String

关键词内容。

(2)KeySentenceLabResults和TopicLabResults.titleKeySentences中的Object数据结构如下:

参数

类型

说明

value

String

关键句内容。

bt

Integer

关键句开始相对音频的时间戳,单位毫秒。

et

Integer

关键句结束相对音频的时间戳,单位毫秒。

si

List<Integer>

关键句关联的句子ID序号。

(3)TopicLabResults中的Object数据结构如下:

参数

类型

说明

value

String

小议题内容。

bt

Integer

小议题开始相对音频的时间戳,单位毫秒。

et

Integer

小议题结束相对音频的时间戳,单位毫秒。

si

List<Integer>

小议题关联的句子ID序号。第一个值是开始句子的ID,第二个值是结束句子的ID。

topicId

Integer

小议题的序号

titleKeySentences

List<Object>

小议题关联的关键句列表。titleKeySentences中的Object详细结构上文(2)有详细说明。

qaPairs

List<Object>

一个议题中,qa问答对的列表。

qaPairs中的Object详细结构下文(5)有详细说明。

(4)ActionLabResults中的Object数据结构如下:

参数

类型

说明

value

String

待办事项内容。

bt

Integer

待办事项开始相对音频的时间戳,单位毫秒。

et

Integer

待办事项结束相对音频的时间戳,单位毫秒。

si

List<Integer>

待办事项关联的句子ID序号。

(5)qaPairs中的Object数据结构如下:

参数

类型

说明

questionSentenceIds

List<Integer>

表示qa问答中问题(question)的句子ID列表。

answerSentenceIds

List<Integer>

表示qa问答中回答(answer)的句子ID列表。

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