# ephia-protocol 中文文档

规范地址：https://npmcn.com/package/ephia-protocol/

版本：1\.2\.0
npm 元数据更新时间：2026-11-03T13:01:05.457Z
中文译文更新时间：2026-11-03T14:43:36.278Z
软件包许可：未声明

本文由上游 README 机器翻译，可能存在偏差，请结合原文核对 API、命令与配置。版权与许可归原作者所有。

原始 npm 页面：https://www.npmjs.com/package/ephia-protocol
原文对照：https://npmcn.com/package/ephia-protocol/?lang=original

## 关键信息（来自 npm 元数据）

- 包体积（解压后）：1.2 MB，91 个文件
- 模块格式：ES Module
- TypeScript 类型：包内自带
- 运行依赖：1 个
- 首次发布：2026-07-17T12:33:26.808Z
- 最新版本发布：2026-11-03T13:01:05.304Z
- 已发布版本数：3（近 12 个月 3 个）

## 中文简介

Contrat universel EphiaAudioEvent - types et sch忧郁

## 安装

```sh
npm install ephia-protocol
```

也可以使用：`pnpm add ephia-protocol`、`yarn add ephia-protocol`、`bun add ephia-protocol`

## README

# 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

```txt
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代码。合同的约束条件是：所有的标准和所有的标准、所有的标准和所有的标准、所有的标准和所有的标准、所有的标准、所有的标准和所有的标准。

## 包膜公社（指其他的薪金）

```json
{
  "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.started` | `clientType`， `mode`， `language` | 会话initiee |
| `session.ready` | `roomName` | Room LiveKit prête，可能的话 |
| `session.stt_ready` | `bufferedFramesFlushed` | 惰性初始化终止符（initialis<e:1>） |
| `session.paused` | \- - - - - - | 会话中断 |
| `session.closed` | `reason` | 会议结束(`user_stop|disconnect|error|timeout`） |
| `session.error` | `code`， `message`， `recoverable` | 误差会话 |
| `session.pong` | \- - - - - - | 你要保持活力 |
| `session.context.reset` | `contextOnly`， `reason` | 上下文后端rmizinitialis<e:1> |
| `session.catchup.started` | `trackName`， `durationMs` | 赶上音频传输 |
| `session.catchup.completed` | `segmentCount`， `durationMs` | 酱termine |
| `session.catchup.failed` | `reason` | 酱echoue |

### 音频/ VAD

| 类型 | 有效载荷cl | 描述 |
| --- | --- | --- |
| `audio.vad.start` | `timestampMs` | Voix detectee |
| `audio.vad.end` | `timestampMs`， `durationMs` | 最后的声音 |

### 管段（双）

| 类型 | 有效载荷cl | 描述 |
| --- | --- | --- |
| `segment.opened` | `segmentId`， `segmentSeq`， `startMs` | 分段音频输出 |
| `segment.audio.closed` | `segmentId`， `endMs`， `reason` | 方音频du段终止 |
| `segment.dropped` | `segmentId`， `reason` | 沉默/粗野，无知 |
| `segment.absorbed` | `segmentId`， `absorbedInto` | 片段融合了舞蹈和舞蹈 |

### 转录-温度升高

| 类型 | 有效载荷cl | 描述 |
| --- | --- | --- |
| `transcript.preview` | `segmentId`， `segmentSeq`， `text`， `revision` | 在课程中发送文本（peut se rsamuxsamuter） |
| `transcript.preview.stable` | `segmentId`， `segmentSeq`， `text`， `revision` | 派对稳定预览 |

### 转录-生命周期片段

| 类型 | 有效载荷cl | 描述 |
| --- | --- | --- |
| `transcript.segment.opened` | `segmentId`， `segmentSeq`， `startedAtMs` | dsm段（管道遗留） |
| `transcript.segment.processing` | `segmentId`， `durationMs` | 终稿正在进行中 |
| `transcript.segment.completed` | `segmentId`， `provider` | 定稿terminee |
| `transcript.segment.ready` | `segmentId`， `text`， `tags` | 文本finalis<e:1> （bridge visual avant commit） |
| `transcript.segment.committed` | `segmentId`， `text`， `tags`， `mergedWith?` | **对于definitif** -贴花喷剂 |
| `transcript.segment.reviewing` | `segmentId`， `tags` | 在课程中复习SMART |
| `transcript.segment.corrected` | `segmentId`， `text` | 纠正复查贴花 |
| `transcript.segment.revised` | `segmentId`， `newText`， `oldText` | 修订post-commit |
| `transcript.segment.review.queued` | `segmentId` | 专心复习 |
| `transcript.segment.review.rejected` | `segmentId`， `reason`， `text` | 检查终端，不需要更正 |
| `transcript.segment.review.failed` | `segmentId`， `error` | 错误评论 |
| `transcript.segment.error` | `segmentId`， `code`， `message`， `recoverable` | 误差定稿 |

### 文档

| 类型 | 有效载荷cl | 描述 |
| --- | --- | --- |
| `document.patch` | `ops[]` | 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`

```json
{
  "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\_channel | dsammarer的突发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.pause` | RPC | 相同的暂停模式 `useRpcCommands`） |
| `ephia.session.resume` | RPC | 相同的简历模式 `useRpcCommands`） |
| `ephia.session.reset` | RPC | 标识复位模式 `useRpcCommands`） |

## 用法

```ts
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 是什么？

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 和提交记录判断。

