npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

chat-a2e-manager

v0.1.0

Published

Real-time audio recording or text input and communication with chat server to obtain chat emotion data management library | 实时音频录制或文本输入与对话服务器通信, 获取对话表情数据的音频管理库

Readme

chat-a2e-manager

1. 项目概述

Chat A2E Manager 是一个实时对话库,主要用于处理前端文本或音频对话、与 WebSocket 对话服务器的双向通信,以及播放携带表情数据(BlendShapes)的音频流。

  • 主要用途:为数字人、语音助手等应用提供实时语音交互与口型同步能力。

2. 快速开始

安装依赖

在项目根目录下执行以下命令安装库:

npm install chat-a2e-manager

项目启动/运行

本库作为依赖集成到您的前端项目中。以下是基本使用流程:

  1. 引入库

    import ChatManager from 'chat-a2e-manager';
  2. 创建实例与连接

    // 初始化实例,指定服务器地址
    const chatManager = new ChatManager('ws://localhost:8080');
    
    // 连接服务器 (可选传入用户ID,音色名称)
    try {
      await chatManager.connect('user-001','voice1');
      console.log('连接成功');
    } catch (err) {
      console.error('连接失败', err);
    }
  3. 监听核心事件

    // 监听字幕消息
    chatManager.addEventListener(ChatManager.SUBTITLE_EVENT, (event) => {
      const { sub, is_first_sentence } = (event as CustomEvent).detail;
      console.log('字幕:', sub);
    });
    
    // 监听表情数据 (用于驱动数字人面部)
    chatManager.addEventListener(ChatManager.BLEND_SHAPE_EVENT, (event) => {
      const { bs } = (event as CustomEvent).detail;
      // bs 为表情权重数组
    });
    
     // 监听播放结束
     chatManager.addEventListener(ChatManager.PLAY_END_EVENT, () => {
         console.log('播放结束');
     });
    
     // 监听聊天服务器连接断开
     chatManager.addEventListener(ChatManager.DIS_CONNECT_EVENT, () => {
         console.log('聊天服务器连接断开');  
     });
    
     //监听聊天服务器满员
     chatManager.addEventListener(ChatManager.CLIENTS_FULL_EVENT, () => {
         console.log('聊天服务器满员!!!');
     });
    
  4. 文本对话控制

     // 发送文本消息到聊天服务器
     chatManager.sendTextData("文本内容");
    
     // 发送TTS文本消息到聊天服务器进行无脑阅读
     chatManager.sendTtsTextData("文本内容");
    
  5. 语音对话控制

    // 开始录音 (通常绑定到按钮点击事件)
    await chatManager.startMic();
    
    // 停止录音
    await chatManager.stopMic();
  6. 数据录制与回放

    // 开启数据录制 (将对话音频和BS数据保存为本地JSON文件)
    // 文件保存于浏览器 OPFS (Origin Private File System) 中
    chatManager.enableA2ESaving = true;
    
    // 保存A2E数据到本地JSON文件
    await chatManager.saveA2EJson();
    
    // 播放本地/网络 JSON 格式的音频与表情数据
    // 数据格式需为包含 { audio: base64, bs: [] } 对象的数组
    await chatManager.playA2EJson('/path/to/a2e.json');
    

3. 功能特性

  • WebSocket通信:实时双向传输音频与文本数据
  • 流式播放:支持服务端下发的音频流排队播放
  • 表情同步:音频播放与 BlendShape 数据帧精确对齐
  • 功率监控:实时回调录音音量功率用于UI展示
  • 自动唤醒:处理移动端 AudioContext 自动恢复机制
  • 文本对话:支持直接发送文本消息进行对话
  • 状态管理:提供完整的连接与录音状态查询接口
  • 数据录制:支持将对话过程中的音频与表情数据保存为本地 JSON 文件
  • 本地回放:支持加载并播放本地 JSON 格式的音频与表情数据

4. 配置说明

初始化配置

在创建 ChatManager 实例时,可以传入第二个参数 AudioConfigOptions 来自定义音频参数:

const options = {
  sampleRate: 16000,          // 录音采样率 (默认 16000)
  frameMs: 600,               // 录音帧毫秒 (默认 600)
  silenceThreshold: 1,        // 静音阈值(默认:1)
  silenceDuration: 1000,      // 静音持续毫秒数(默认:1000)
  playerSampleRate: 16000,    // 播放采样率(默认:16000)
  echoCancellation: true,     // 回声消除(AEC)(默认:true)
  noiseSuppression: true,     // 噪声抑制 (默认:true)
  autoGainControl: false,     // 自动增益控制 (默认:false)
};

const chatManager = new ChatManager('ws://server-url', options);

关键配置文件

  • src/AudioConfig.ts:定义了所有音频相关的默认配置参数,如采样率、静音阈值等。若需修改默认值,可在此文件或通过构造函数参数调整。

5. 开发指南

代码结构简要说明

src/
├── ChatManager.ts    # [核心] 统筹管理 WebSocket、录音与播放
├── AudioRecorder.ts  # [录音] 处理麦克风采集
├── AudioPlayer.ts    # [播放] 基于 Web Audio API,处理音频与表情同步
├── AudioConfig.ts    # [配置] 音频参数配置类
└── index.ts          # [入口] 模块导出定义

浏览器 UMD 使用(自包含)

UMD已自包含依赖,在浏览器可直接通过 CDN 引入:

<script src="https://cdn.jsdelivr.net/npm/chat-a2e-manager/dist/index.umd.js"></script>
<script>
  const { ChatManager, AudioRecorder, AudioPlayer, AudioConfig } = window.ChatA2EManager;
  // 直接使用,无需额外依赖
</script>

若使用打包器(ESM/CJS),同样可以:

import { ChatManager } from 'chat-a2e-manager';

发布

  • 运行构建:
npm run build
  • 发布到 npm:
npm config set //registry.npmjs.org/:_authToken "npm_..."

npm publish

许可协议

MIT License