ephia-protocol

中文文档
1.2.0发布于 2026/11/03TypeScriptES Module

Contrat universel EphiaAudioEvent - types et sch忧郁

中文使用文档
文档目录17 节
  1. Rôle et consommateurs autoris郁闷
  2. 普林西比fondamental
  3. À quoi sert ce档案?
  4. 包膜公社(指其他的薪金)
  5. r<e:1>协议
  6. r<s:1> d' atomicite_des聚变
  7. Événements par catsamgoorie
  8. 会话
  9. 音频/ VAD
  10. 管段(双)
  11. 转录-温度升高
  12. 转录-生命周期片段
  13. 文档
  14. 通量法向d'un段
  15. 负载示例 committed
  16. 消息客户机→后端
  17. 用法

ephia-protocol

Contrat universel EphiaAudioEvent - le cœur du systemme。

Rôle et consommateurs autoris郁闷

ephia-protocol 美国东部时间勒 签约有线互联网 d'Ephia:类型、模式、fixture等 更新日志protocolaire。看到 docs/wire-contract.md 等 docs/protocol-versioning.md 倒勒 实际不变量(协议v3): segment.canonical, commandSeq, ephiaWireServerEventSchema).

我将测试消费指导标准。

  • @ephia/sdk (packages/ephia-sdk) -汉城运行时的客户端自动访问的转换器的电线;
  • Les测试与包的收缩有关;
  • le后端Python通过les fixture JSON de src/fixtures/。

我不会通过一个API客户端。 应用程序不需要通过导入器的模式连接 (ephiaWireServerEventSchema(等)倒解析器,你的贴花拉西拉西方向- elles consomment大 @ephia/sdk例如,qui / qui / qui / qui / qui / qui / qui / qui / qui / qui / qui

注:le restest de ce README(章节“信封公社”,“Événements par catsamgorie”, 为例 transcript.segment.committed(3)联合国第3号通讯议定书(联合国第3号通讯议定书 事实上,我们已经通过了一项调查,确定了我们的目标是通过一项调查,确定我们的目标是通过一项调查。

普林西比fondamental

Protocol > Framework

Ce封装测试 独立. 我将创建新的SDK,新的React,新的LiveKit,新的后端。

非洲大陆:

  • types TypeScript des samvacimement public
  • schsammas zold浇注验证运行时
  • 消息客户端
  • 会议期间的薪金
  • 编码误差
  • 版本du协议(3 线/ "3.0" 其他功能)

À quoi sert ce档案?

packages/protocol 对产品音频进行合同协议。Il避开缆车后端等用des SDK evoluent定义d 'evenements发散。

Concretement:

  • 我们的后端doit sametree des payloads JSON符合我们的sametree包
  • 让SDK导入所有类型、类型、reducer、处理程序和回调函数
  • 让SDK生效的chaque samvacimement reactu avec ephiaAudioEventSchema.safeParse()
  • 以下测试分别用于测试vsamrifier与兼容后端/SDK <s:1>组件的兼容性,并用于测试vsamriri<e:1>的源

让后端Python导入TypeScript代码。合同的约束条件是:所有的标准和所有的标准、所有的标准和所有的标准、所有的标准和所有的标准、所有的标准、所有的标准和所有的标准。

包膜公社(指其他的薪金)

{
  "protocolVersion": 3,
  "eventId": "550e8400-e29b-41d4-a716-446655440000",
  "sessionId": "sess_abc",
  "type": "transcript.segment.committed",
  "seq": 42,
  "timestampMs": 1716200000000,
  "payload": { "..." },
  "meta": { "provider": "voxtral-small", "latencyMs": 340 }
}
  • seq :严格的牛角面包
  • eventId : UUID唯一
  • timestampMs :时间戳服务器
  • sessionId :对某些事件负有义务
  • meta : optionnel -诊断,延迟,模式

r<e:1>协议

  • 没有问题 preview/stable 它是联合国的一部分 committed
  • committed 法语版法语版法语版法语版
  • reviewing 信号一审查SMART无更改文本
  • corrected 替换精确的le段 committed 代理行
  • review.rejected 终止一次审查,不更改文本
  • 命令为 seq

r<s:1> d' atomicite_des聚变

transcript.segment.committed Est l' s samvsamement atomique d'application documentation。

Lorsqu'un段吸收,d'autres段,载荷 mergedWith 大陆的IDs吸收了大量的化学物质。让客户做贴花,并提交最后的et la抑制吸收的数据 一个seule事务可视化原子 - jamais en deux薪金,薪金和薪金。

segment.absorbed 测试UN的生命周期/调试。我将测试一下。 然后 transcript.segment.committed 代理行。我要做的是,在我们承诺承诺之前,我们要做的是,在我们承诺承诺之前,我们要做得更好。

Événements par catsamgoorie

会话

类型有效载荷cl描述
session.startedclientType, mode, language会话initiee
session.readyroomNameRoom LiveKit prête,可能的话
session.stt_readybufferedFramesFlushed惰性初始化终止符(initialis<e:1>)
session.paused- - - - - -会话中断
session.closedreason会议结束(user_stop|disconnect|error|timeout)
session.errorcode, message, recoverable误差会话
session.pong- - - - - -你要保持活力
session.context.resetcontextOnly, reason上下文后端rmizinitialis<e:1>
session.catchup.startedtrackName, durationMs赶上音频传输
session.catchup.completedsegmentCount, durationMs酱termine
session.catchup.failedreason酱echoue

音频/ VAD

类型有效载荷cl描述
audio.vad.starttimestampMsVoix detectee
audio.vad.endtimestampMs, durationMs最后的声音

管段(双)

类型有效载荷cl描述
segment.openedsegmentId, segmentSeq, startMs分段音频输出
segment.audio.closedsegmentId, endMs, reason方音频du段终止
segment.droppedsegmentId, reason沉默/粗野,无知
segment.absorbedsegmentId, absorbedInto片段融合了舞蹈和舞蹈

转录-温度升高

类型有效载荷cl描述
transcript.previewsegmentId, segmentSeq, text, revision在课程中发送文本(peut se rsamuxsamuter)
transcript.preview.stablesegmentId, segmentSeq, text, revision派对稳定预览

转录-生命周期片段

类型有效载荷cl描述
transcript.segment.openedsegmentId, segmentSeq, startedAtMsdsm段(管道遗留)
transcript.segment.processingsegmentId, durationMs终稿正在进行中
transcript.segment.completedsegmentId, provider定稿terminee
transcript.segment.readysegmentId, text, tags文本finalis<e:1> (bridge visual avant commit)
transcript.segment.committedsegmentId, text, tags, mergedWith?对于definitif -贴花喷剂
transcript.segment.reviewingsegmentId, tags在课程中复习SMART
transcript.segment.correctedsegmentId, text纠正复查贴花
transcript.segment.revisedsegmentId, newText, oldText修订post-commit
transcript.segment.review.queuedsegmentId专心复习
transcript.segment.review.rejectedsegmentId, reason, text检查终端,不需要更正
transcript.segment.review.failedsegmentId, error错误评论
transcript.segment.errorsegmentId, code, message, recoverable误差定稿

文档

类型有效载荷cl描述
document.patchops[]opsamos的结构和文件是一致的

通量法向d'un段

segment.opened
  → transcript.preview         (texte interim, 1..N fois)
  → transcript.preview.stable  (texte stable, 0..N fois)
  → segment.audio.closed       (audio terminé, traitement en cours)
  → transcript.segment.committed  ← appliquer atomiquement
  → [transcript.segment.reviewing
     → transcript.segment.corrected | transcript.segment.review.rejected]

负载示例 committed

{
  "protocolVersion": 3,
  "eventId": "550e8400-e29b-41d4-a716-446655440000",
  "sessionId": "sess_abc",
  "type": "transcript.segment.committed",
  "seq": 42,
  "timestampMs": 1716200000000,
  "payload": {
    "segmentId": "seg_12",
    "segmentSeq": 12,
    "text": "Le foie est de taille normale.",
    "source": "voxtral-small",
    "tags": [{ "tag": "anatomy", "word": "foie" }]
  },
  "meta": {
    "provider": "voxtral-small",
    "latencyMs": 820,
    "audioDurationMs": 2300
  }
}

消息客户机→后端

消息Envoye通过描述
{ type: "session.pause" }data_channel米暂停
{ type: "session.resume" }data_channel重复一下
{ type: "session.reset", payload: { contextOnly: true } }data_channel重置contexte
{ type: "catchup.start", payload: { catchupId, source, sampleRate, channels, bytesTotal, durationMs, clientStartedAtMs?, clientEndedAtMs?, catchupSeq?, operationId?, startSample?, endSample? } }data_channeldsammarer的突发PCM16单声道16khz追赶; startSample/endSample 客户端le前缀:com audio.live.anchor
{ type: "catchup.chunk", payload: { catchupId, chunkIndex, offsetBytes, dataBase64 } }data_channel特使在大块赶上可以让人心烦意乱
{ type: "catchup.end", payload: { catchupId, chunkCount, bytesTotal } }data_channel最后,我突然赶上来了
{ type: "catchup.abort", payload: { catchupId, reason } }data_channel环宇乐爆棚追赶
ephia.session.pauseRPC相同的暂停模式 useRpcCommands)
ephia.session.resumeRPC相同的简历模式 useRpcCommands)
ephia.session.resetRPC标识复位模式 useRpcCommands)

用法

import {
  ephiaAudioEventSchema,
  type EphiaAudioEvent,
  type TranscriptSegmentCommittedEvent,
  PROTOCOL_VERSION,  // 4
} from "ephia-protocol";

// Validation runtime
const parsed = ephiaAudioEventSchema.safeParse(raw);
if (!parsed.success) {
  console.warn("Invalid event:", parsed.error.issues);
  return;
}

// Discrimination par type
const event: EphiaAudioEvent = parsed.data;
if (event.type === "transcript.segment.committed") {
  const { segmentId, text, tags, mergedWith } = event.payload;
  applyToEditor(segmentId, text, { absorbed: mergedWith ?? [] });
}

版本与发布记录

ephia-protocol 共发布 3 个版本,首次发布于 2026/07/17;过去 12 个月发布了 3 个版本。

版本发布日期距今
1.2.0latest2026/11/03今天
1.1.02026/10/2212 天前
1.0.02026/07/173 个月前

关于 ephia-protocol 的常见问题

ephia-protocol 是什么?

Contrat universel EphiaAudioEvent - types et sch忧郁

如何安装 ephia-protocol?

在项目目录运行 npm install ephia-protocol,或使用 pnpm add / yarn add / bun add。

ephia-protocol 支持 TypeScript 吗?

支持。包内自带 TypeScript 类型声明(package.json 声明了 types 入口),安装后即可获得类型提示,无需再安装 @types 包。

ephia-protocol 支持 ESM 还是 CommonJS?

以 ES Module 形式发布,推荐使用 import 引入。在 CommonJS 项目中,Node.js 20.19+ / 22.12+ 可以直接 require() 不含顶层 await 的 ES Module,更早的版本需要改用动态 import()。

ephia-protocol 可以商用吗?

ephia-protocol 使用 未声明 许可。package.json 没有声明许可证。没有许可证的代码默认保留全部权利,商用前请联系作者或查看仓库中的 LICENSE 文件。以上为概括,不构成法律意见,请以许可原文为准。

ephia-protocol 还在维护吗?

最新版本 1.2.0 发布于 2026/11/03(今天);至今共发布 3 个版本,其中过去 12 个月发布了 3 个;首次发布于 2026/07/17。发布频率只是参考信号:功能稳定的工具可能很少需要更新,建议结合源码仓库的 issue 和提交记录判断。