更新记录

1.0.0(2025-12-16) 下载此版本


平台兼容性

uni-app(4.83)

Vue2 Vue3 Chrome Safari app-vue app-nvue Android iOS 鸿蒙
×
微信小程序 支付宝小程序 抖音小程序 百度小程序 快手小程序 京东小程序 鸿蒙元服务 QQ小程序 飞书小程序 快应用-华为 快应用-联盟

Neo Voice Wave

仿 GPT-4o 语音通话组件 (Uni-app 版),纯 Canvas 实现的“流体渐变能量球”,零依赖,高性能,开箱即用。

✨ 特性

  • 视觉引擎:使用 Canvas 2D 实现流体融合效果,模拟 GPT-4o 的经典液态光球。
  • 听觉驱动:内置音频分析内核,根据麦克风音量实时驱动动画。
  • 状态管理:支持 listening (聆听)、thinking (思考)、speaking (讲话) 三种状态。
  • 沉浸体验:全屏暗黑模式,适配 OLED 屏幕。
  • 零依赖:不依赖 Three.js 或 WebGL,体积小巧。

📦 安装

在 HBuilderX 中右键 uni_modules 目录,选择 从插件市场导入,搜索 neo-voice-wave 安装。

或者直接复制 neo-voice-wave 目录到项目的 uni_modules 目录下。

🚀 快速开始

<template>
  <view>
    <!-- 引入组件 -->
    <neo-voice-wave 
      :state="aiState"
      @hangup="onHangup"
      @mute="onMute"
      @energy="onEnergy"
    />
  </view>
</template>

<script setup>
import { ref } from 'vue';

// 状态流转:listening -> thinking -> speaking
const aiState = ref('listening'); 

const onHangup = () => {
  console.log('用户挂断');
  uni.navigateBack();
};

const onMute = (muted) => {
  console.log('静音状态:', muted);
};

// 简单的 VAD (语音活动检测) 示例
const onEnergy = (energy) => {
  // energy: 0.0 ~ 1.0
  if (aiState.value === 'listening' && energy > 0.1) {
    console.log('检测到用户说话:', energy);
    // 在此处重置静音检测定时器...
  }
};

// 模拟 AI 思考过程
setTimeout(() => { aiState.value = 'thinking'; }, 3000);
setTimeout(() => { aiState.value = 'speaking'; }, 5000);
</script>

📖 API

Props

参数名 类型 默认值 说明
state String 'listening' 当前状态。可选值:listening (聆听), thinking (思考), speaking (讲话)
initialMuted Boolean false 初始是否静音

Events

事件名 返回参数 说明
@hangup - 用户点击了红色挂断按钮
@mute isMuted: boolean 用户点击了静音/取消静音按钮
@error error: object 麦克风权限获取失败或运行时错误
@energy energy: number 实时音频能量值 (0.0 ~ 1.0),可用于实现 VAD (语音活动检测)

🛠️ 技术原理

  • 渲染 (Rendering): 使用 ctx.globalCompositeOperation = 'screen' 实现光影叠加,通过多层径向渐变模拟流体感。
  • 音频 (Audio): 封装 uni.getRecorderManager(),计算 PCM 数据流的均方根 (RMS) 能量值来驱动动画。
  • 状态机:
    • listening: 麦克风能量 -> 动画 (用户说话时球体跳动)
    • thinking: 正弦波 (Sine Wave) -> 呼吸动画 (AI 思考时平缓呼吸)
    • speaking: 麦克风能量/模拟 -> 动画 (AI 讲话时球体跳动)

📄 许可证

MIT License

隐私、权限声明

1. 本插件需要申请的系统权限列表:

2. 本插件采集的数据、发送的服务器地址、以及数据用途说明:

3. 本插件是否包含广告,如包含需详细说明广告表达方式、展示频率:

许可协议

MIT协议

暂无用户评论。