aiavatarkit

aiavatarkit

快速构建智能对话虚拟形象的开源工具

AIAvatarKit是一个开源工具包,专为快速开发智能对话虚拟形象而设计。该工具支持在VRChat、cluster等元宇宙平台和现实设备上运行,提供高度可扩展性和便捷的使用体验。AIAvatarKit集成了语音识别、自然语言处理和语音合成等技术,使开发者能够创建交互式虚拟角色,实现多样化的应用场景。

AIAvatarKitAI对话虚拟形象语音交互多平台支持Github开源项目

AIAvatarKit

🥰 快速构建基于AI的会话头像 ⚡️💬

AIAvatarKit架构概览

✨ 特性

  • 可在任何地方使用:VRChat、cluster等元宇宙平台,甚至现实世界的设备。
  • 可扩展:取决于你的需求,拥有无限的能力。
  • 易于上手:开箱即用,随时开始对话。

🍩 要求

  • 在你的计算机或网络可达的机器上运行VOICEVOX API(文本转语音)
  • Google或Azure语音服务的API密钥(语音转文本)
  • OpenAI API的API密钥(ChatGPT)
  • Python 3.10(运行环境)

🚀 快速开始

安装AIAvatarKit。

$ pip install aiavatar

创建名为run.py的脚本。

from aiavatar import AIAvatar app = AIAvatar( openai_api_key="你的OpenAI_API密钥", google_api_key="你的Google_API密钥" ) app.start_listening_wakeword() # # 提示:在Windows上使用Ctrl+C终止,请使用`while`循环等待,而不是`app.start_listening_wakeword()` # app.start_listening_wakeword(False) # while True: # time.sleep(1)

启动AIAvatar。别忘了提前启动VOICEVOX。

$ python run.py

当你说出唤醒词"こんにちは"(或者当语言不是ja-JP时说"Hello"),对话就会开始。

之后尽情享受对话吧!

🔖 目录

📕 配置指南

以下是每个组件的配置。

🎓 生成式AI

在实例化AIAvatar时,你可以设置模型和系统消息内容。

app = AIAvatar( openai_api_key="你的OpenAI_API密钥", google_api_key="你的Google_API密钥", model="gpt-4-turbo", system_message_content="你是我的猫。" )

ChatGPT

如果你想进行详细配置,可以创建带有自定义参数的ChatGPTProcessor实例,并将其设置给AIAvatar

from aiavatar.processors.chatgpt import ChatGPTProcessor chat_processor = ChatGPTProcessor( api_key=OPENAI_API_KEY, model="gpt-4-turbo", temperature=0.0, max_tokens=200, system_message_content="你是我的猫。", history_count=20, # 作为上下文包含在ChatGPT请求中的消息数量 history_timeout=120.0 # 历史记录过期的时间(秒) ) app.chat_processor = chat_processor

Claude

创建带有自定义参数的ClaudeProcessor实例,并将其设置给AIAvatar。默认模型是claude-3-sonnet-20240229

from aiavatar.processors.claude import ClaudeProcessor claude_processor = ClaudeProcessor( api_key="ANTHROPIC_API_KEY" ) app = AIAvatar( google_api_key=GOOGLE_API_KEY, chat_processor=claude_processor )

注意:我们目前支持Anthropic API上的Claude 3,而不是Amazon Bedrock。

Gemini

创建带有自定义参数的GeminiProcessor实例,并将其设置给AIAvatar。默认模型是gemini-pro

from aiavatar.processors.gemini import GeminiProcessor gemini_processor = GeminiProcessor( api_key="你的Google_API密钥" ) app = AIAvatar( google_api_key=GOOGLE_API_KEY, chat_processor=gemini_processor )

注意:我们目前支持Google AI Studio上的Gemini,而不是Vertex AI。

Dify

你可以使用Dify API代替特定LLM的API。这样就无需在本地管理工具或RAG的代码。

from aiavatar import AIAvatar from aiavatar.processors.dify import DifyProcessor chat_processor_dify = DifyProcessor( api_key=DIFY_API_KEY, user=DIFY_USER ) app = AIAvatar( google_api_key=GOOGLE_API_KEY, chat_processor=chat_processor_dify ) app.start_listening_wakeword()

其他LLMs

你可以通过实现ChatProcessor接口来创建使用其他生成式AI(如Llama3)的自定义处理器。我们稍后会提供示例。🙏

🗣️ 语音

在实例化AIAvatar时,你可以设置VOICEVOX服务器的说话人ID和基础URL。

app = AIAvatar( openai_api_key="你的OpenAI_API密钥", google_api_key="你的Google_API密钥", # 46是Sayo。访问http://127.0.0.1:50021/speakers获取所有角色的ID voicevox_speaker_id=46 )

如果你想进行详细配置,可以创建带有自定义参数的VoicevoxSpeechController实例,并将其设置给AIAvatar

from aiavatar.speech.voicevox import VoicevoxSpeechController speech_controller = VoicevoxSpeechController( base_url="https", speaker_id=46, device_index=app.audio_devices.output_device ) app.avatar_controller.speech_controller = speech_controller

语音在单独的子进程中处理,以提高音频质量并减少在AI响应和语音输出并行处理时由线程阻塞引起的噪音(如爆音)。对于资源有限的系统,设置use_subprocess=False允许在主进程中处理语音,但可能会重新引入一些噪音。

app.avatar_controller.speech_controller = VoicevoxSpeechController( base_url="http://127.0.0.1:50021", speaker_id=46, device_index=app.audio_devices.output_device, use_subprocess=False # 设置为False以在主进程中处理语音 )

你还可以设置使用其他文本转语音服务的语音控制器。目前我们提供AzureSpeechController

from aiavatar.speech.azurespeech import AzureSpeechController AzureSpeechController( AZURE_SUBSCRIPTION_KEY, AZURE_REGION, device_index=app.audio_devices.output_device, # # 如果你想自定义,可以设置以下参数 # speaker_name="en-US-AvaNeural", # speaker_gender="Female", # lang="en-US" )

默认说话人是支持多种语言的en-US-JennyMultilingualNeural

https://learn.microsoft.com/ja-jp/azure/ai-services/speech-service/language-support?tabs=tts

你可以通过实现SpeechController接口或扩展SpeechControllerBase来创建自定义语音控制器。

🐓 唤醒词监听器

在实例化AIAvatar时设置唤醒词。当AIAvatar识别到列表中的一个词时,对话就会开始。

app = AIAvatar( openai_api_key=OPENAI_API_KEY, google_api_key=GOOGLE_API_KEY, wakewords=["Hello", "こんにちは"], )

如果你想进行详细配置,可以创建带有自定义参数的WakewordListener实例,并将其设置给AIAvatar。 wakeword_listener = WakewordListener( api_key=GOOGLE_API_KEY, wakewords=["Hello", "こんにちは"], device_index=app.audio_devices.input_device, timeout=0.2, # 在结束语音识别前等待静音的持续时间(秒) max_duration=1.5 # 识别语音的最长持续时间(秒),超过此时间将停止 )

app.wakeword_listener = wakeword_listener

🙏 请求监听器

如果你想详细配置,可以使用自定义参数创建 VoiceRequestListener 实例并将其设置给 AIAvatar

from aiavatar.listeners.voicerequest import VoiceRequestListener

request_listener = VoiceRequestListener( api_key=GOOGLE_API_KEY, device_index=app.audio_devices.input_device, detection_timeout=15.0, # 如果在此时间内未开始说话,则结束进程的超时时间(秒) timeout=0.5, # 在结束语音识别前等待静音的持续时间(秒) max_duration=20.0, # 识别语音的最长持续时间(秒),超过此时间将停止 min_duration=0.2, # 被识别为语音的最短持续时间(秒);更短的声音将被忽略 )

app.request_listener = request_listener

✨ 使用 Azure 监听器

我们强烈推荐使用 AzureWakewordListener 和 AzureRequestListner,它们比默认的监听器更稳定。查看 examples/run_azure.py,它可以直接运行。

安装 Azure SpeechSDK。

$ pip install azure-cognitiveservices-speech

修改脚本以使用 AzureRequestListener 和 AzureWakewordListener。

from aiavatar.listeners.azurevoicerequest import AzureVoiceRequestListener from aiavatar.listeners.azurewakeword import AzureWakewordListener

YOUR_SUBSCRIPTION_KEY = "YOUR_SUBSCRIPTION_KEY" YOUR_REGION_NAME = "YOUR_REGION_NAME"

创建 AzureRequestListener

azure_request_listener = AzureVoiceRequestListener( YOUR_SUBSCRIPTION_KEY, YOUR_REGION_NAME )

创建 AzureWakewordListner

async def on_wakeword(text): logger.info(f"唤醒词:{text}") await app.start_chat()

azrue_wakeword_listener = AzureWakewordListener( YOUR_SUBSCRIPTION_KEY, YOUR_REGION_NAME, on_wakeword=on_wakeword, wakewords=["こんにちは"] )

使用 AzureRequestListener 和 Azure WakewordListener 创建 AIAVater

app = AIAvatar( openai_api_key=OPENAI_API_KEY, request_listener=azure_request_listener, wakeword_listener=azrue_wakeword_listener )

通过设置 device_name 参数来指定麦克风设备。 参见 Microsoft Learn 了解如何在各平台上检查设备 UID。 https://learn.microsoft.com/en-us/azure/ai-services/speech-service/how-to-select-audio-input-devices

我们提供了一个适用于 MacOS 的脚本。只需在 Xcode 上运行它即可。

设备 UID:BuiltInMicrophoneDevice,名称:MacBook Pro 的麦克风 设备 UID:com.vbaudio.vbcableA:XXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX,名称:VB-Cable A 设备 UID:com.vbaudio.vbcableB:XXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX,名称:VB-Cable B

例如,MacOS 上内置麦克风的 UID 是 BuiltInMicrophoneDevice

然后,将其设置为 device_name 的值。

azure_request_listener = AzureVoiceRequestListener( YOUR_SUBSCRIPTION_KEY, YOUR_REGION_NAME, device_name="BuiltInMicrophoneDevice" )

azure_wakeword_listener = AzureWakewordListener( YOUR_SUBSCRIPTION_KEY, YOUR_REGION_NAME, on_wakeword=on_wakeword, wakewords=["Hello", "こんにちは"], device_name="BuiltInMicrophoneDevice" )

🍥 使用 OpenAI 的音频 API

OpenAI 的语音转文本和文本转语音功能提供了跨多种语言的动态语音识别和语音输出,无需固定的语言设置。

from aiavatar import AIAvatar from aiavatar.device import AudioDevice from aiavatar.listeners.openailisteners import ( OpenAIWakewordListener, OpenAIVoiceRequestListener ) from aiavatar.speech.openaispeech import OpenAISpeechController

获取默认音频设备

devices = AudioDevice()

语音

speech_controller = OpenAISpeechController( api_key=OPENAI_API_KEY, device_index=devices.output_device )

唤醒词

async def on_wakeword(text): await app.start_chat(request_on_start=text, skip_start_voice=True)

wakeword_listener = OpenAIWakewordListener( api_key=OPENAI_API_KEY, device_index=devices.input_device, wakewords=["こんにちは"], on_wakeword=on_wakeword )

请求

request_listener = OpenAIVoiceRequestListener( api_key=OPENAI_API_KEY, device_index=devices.input_device )

使用 OpenAI 组件创建 AIAvatar

app = AIAvatar( openai_api_key=OPENAI_API_KEY, wakeword_listener=wakeword_listener, request_listener=request_listener, speech_controller=speech_controller, noise_margin=10.0, verbose=True ) app.start_listening_wakeword()

🔈 音频设备

你可以通过名称或索引指定组件使用的音频设备。

from aiavatar.device import AudioDevice

通过名称或索引获取设备

audio_device = AudioDevice( input_device="麦克风", output_device="扬声器" )

为组件设置设备。

为 SpeechController 设置输出设备

speech_controller = VoicevoxSpeechControllerSubProcess( device_index=audio_device.output_device, base_url="http://127.0.0.1:50021", speaker_id=46, )

为监听器设置输入设备

request_listener = VoiceRequestListener( device_index=audio_device.input_device )

wakeword_listener = WakewordListener( device_index=audio_device.input_device, wakewords=["Hello", "こんにちは"] )

为 AIAvatar 设置组件

app = AIAvatar( openai_api_key=OPENAI_API_KEY, speech_controller=speech_controller, request_listener=request_listener, wakeword_listener=wakeword_listener )

🥰 面部表情

要在对话中控制面部表情,请按如下方式在 FaceController.faces 中设置面部表情名称和值,然后通过在提示中添加指令,将这些表情键包含在响应消息中。

app.avatar_controller.face_controller.faces = { "neutral": "🙂", "joy": "😀", "angry": "😠", "sorrow": "😞", "fun": "🥳" }

app.chat_processor.system_message_content = """# 面部表情

  • 你有以下表情:
  • joy(喜悦)
  • angry(愤怒)
  • sorrow(悲伤)
  • fun(有趣)
  • 如果你想表达特定情绪,请在句子开头插入,如 [face:joy]。

示例 [face:joy]嘿,你能看到海洋![face:fun]让我们去游泳吧。 """

这样可以在对话过程中在终端自主显示像 🥳 这样的表情符号。要在元宇宙平台上实际控制头像的面部表情,而不是显示像 🥳 这样的表情符号,你需要使用针对每个平台集成机制定制的实现。请参考我们的 VRChatFaceController 作为示例。

💃 动画

正在编写中... ✍️

👀 视觉

AIAvatarKit 在 AI 确定需要视觉来处理用户请求时,动态捕获并发送图像给 AI。这为你在 VRChat 等元宇宙平台上的 AIAvatar 提供了"眼睛"。

要使用视觉功能,请在系统消息中指示视觉标签和 ChatGPTProcessor.get_image

import io import pyautogui # pip install pyautogui from aiavatar.processors.chatgpt import ChatGPTProcessor from aiavatar.device.video import VideoDevice # pip install opencv-python

在系统消息中指示视觉标签

system_message_content = """

使用视觉

如果你需要图像来处理用户的请求,可以使用以下方法获取:

  • screenshot(屏幕截图)
  • camera(相机)

如果需要图像来处理请求,请在你的回复中添加类似 [vision:screenshot] 的指令,以向用户请求图像。

通过添加这个指令,用户将在下一次发言中提供图像。无需对图像本身进行评论。

示例:

用户:看!这是我今天吃的寿司。 助手:[vision:screenshot] 让我看看。 """

实现 get_image

default_camera = VideoDevice(device_index=0, width=960, height=540) async def get_image(source: str=None) -> bytes: if source == "camera": return await default_camera.capture_image("camera.jpg") # 保存当前图像用于调试 else: buffered = io.BytesIO() image = pyautogui.screenshot(region=(0, 0, 1280, 720)) image.save(buffered, format="PNG") image.save("screenshot.png") # 保存当前图像用于调试 return buffered.getvalue()

配置ChatGPTProcessor

chat_processor = ChatGPTProcessor( api_key=OPENAI_API_KEY, model="gpt-4o", system_message_content=system_message_content, use_vision = True ) chat_processor.get_image = get_image


**注意**

* 为避免性能问题,只会将最新的图像发送给ChatGPT。
* Gemini和Claude也可以以相同的方式使用视觉功能。只需将`ChatGPTProcessor`替换为`ClaudeProcessor`或`GeminiProcessor`即可。


## 🎭 自定义行为

你可以在监听用户请求、处理这些请求或识别唤醒词开始对话时调用自定义实现。

在以下示例中,在每个时机改变面部表情旨在增强与AI头像的互动体验。

```python
# 设置角色在听用户说话时的表情
async def set_listening_face():
    await app.avatar_controller.face_controller.set_face("listening", 3.0)
app.request_listener.on_start_listening = set_listening_face

# 设置角色在处理请求时的表情
async def set_thinking_face():
    await app.avatar_controller.face_controller.set_face("thinking", 3.0)
app.chat_processor.on_start_processing = set_thinking_face

async def on_wakeword(text):
    logger.info(f"唤醒词:{text}")
    # 设置检测到唤醒词时的表情
    await app.avatar_controller.face_controller.set_face("smile", 2.0)
    await app.start_chat(request_on_start=text, skip_start_voice=True)

🌎 平台指南

AIAvatarKit能够在任何允许应用程序挂接音频输入和输出的平台上运行。已经测试过的平台包括:

  • VRChat
  • cluster
  • Vket Cloud

除了在PC上运行以操作这些平台上的AI头像外,你还可以通过将扬声器、麦克风和(如果可能的话)显示器连接到树莓派上来创建一个通信机器人。

🐈 VRChat

  • 需要2个虚拟音频设备(例如VB-CABLE)。
  • 需要多个VRChat账号才能与你的AIAvatar聊天。

开始使用

首先,在Python解释器中运行以下命令来检查音频设备。

$ % python >>> from aiavatar import AudioDevice >>> AudioDevice.list_audio_devices() 可用的音频设备: 0: 耳机麦克风 (Oculus Virt : 6: CABLE-B 输出 (VB-Audio Cable 7: Microsoft 声音映射器 - 输出 8: SONY TV (NVIDIA High Definition : 13: CABLE-A 输入 (VB-Audio Cable A :

在这个例子中,

  • 要将VB-Cable-A用作VRChat的麦克风,output_device的索引是13(CABLE-A 输入)。
  • 要将VB-Cable-B用作VRChat的扬声器,input_device的索引是6(CABLE-B 输出)。别忘了将VB-Cable-B 输入设置为Windows操作系统的默认输出设备。

然后像下面这样编辑run.py

# 创建AIAvatar app = AIAvatar( GOOGLE_API_KEY, OPENAI_API_KEY, model="gpt-3.5-turbo", system_message_content=system_message_content, input_device=6 # 从VRChat监听声音 output_device=13, # 对VRChat麦克风说话 )

你也可以设置音频设备的名称而不是索引(部分匹配,忽略大小写)。

input_device="CABLE-B Out" # 从VRChat监听声音 output_device="cable-a input", # 对VRChat麦克风说话

运行它。

$ run.py

在运行run.py的机器上以桌面模式启动VRChat,并使用AIAvatar的账号登录。然后在VRChat设置窗口中将VB-Cable-A设置为麦克风。

这就是全部步骤!让我们与AIAvatar聊天吧。在另一台机器(或Quest)上登录VRChat,进入AIAvatar所在的世界。

面部表情

AIAvatarKit通过Avatar OSC控制面部表情。

LLM(ChatGPT/Claude/Gemini)
带面部标签的响应 [face:joy]你好!
AIAvatarKit(VRCFaceExpressionController)
osc FaceOSC=1
VRChat(FX 动画控制器)

😆

所以首先,按以下步骤设置你的头像:

  1. 添加头像参数FaceOSC(类型:int,默认值:0,保存:false,同步:true)。
  2. FaceOSC参数添加到FX动画控制器。
  3. 在FX动画控制器中添加层并放置面部表情的状态和过渡。
  4. (可选)如果你使用的是已经在VRChat中使用的头像,在头像json中添加输入参数配置。

接下来,使用VRChatFaceController

from aiavatar.face.vrchat import VRChatFaceController # 设置VRChatFaceContorller vrc_face_controller = VRChatFaceController( faces={ "neutral": 0, # 总是设置`neutral: 0` # key = LLM可以理解的表情名称 # value = 在FX动画控制器上的过渡中设置的FaceOSC值 "joy": 1, "angry": 2, "sorrow": 3, "fun": 4 } )

最后,在系统提示中添加面部表情部分。

# 制作系统提示 system_message_content = """ # 面部表情 * 你有以下表情: - joy - angry - sorrow - fun * 如果你想表达特定情绪,请在句子开头插入,如[face:joy]。 示例 [face:joy]嘿,你能看到海洋![face:fun]我们去游泳吧。 """ # 将它们设置到AIAvatar app = AIAvatar( openai_api_key=OPENAI_API_KEY, google_api_key=GOOGLE_API_KEY, face_controller=vrc_face_controller, system_message_content=system_message_content )

你可以不仅通过语音对话,还可以通过REST API来测试它。

🍓 树莓派

正在编写中... ✍️

🧩 RESTful APIs

你可以通过RESTful APIs控制AIAvatar。提供的功能有:

  • WakewordLister

    • start:启动WakewordListener
    • stop:停止WakewordListener
    • status:显示WakewordListener的状态
  • Avatar

    • speech:用面部表情和动画说出文本
    • face:设置面部表情
    • animation:设置动画
  • System

    • log:显示最近的日志

要使用REST APIs,创建API应用并设置路由,而不是调用app.start_listening_wakeword()

from fastapi import FastAPI from aiavatar import AIAvatar from aiavatar.api.router import get_router app = AIAvatar( openai_api_key=OPENAI_API_KEY, google_api_key=GOOGLE_API_KEY ) # app.start_listening_wakeword() # 创建API应用并设置路由 api = FastAPI() api_router = get_router(app, "aiavatar.log") api.include_router(api_router)

使用uvicorn启动API。

$ uvicorn run:api

调用/wakeword/start来启动唤醒词监听器。

$ curl -X 'POST' \ 'http://127.0.0.1:8000/wakeword/start' \ -H 'accept: application/json' \ -H 'Content-Type: application/json' \ -d '{ "wakewords": [] }'

http://127.0.0.1:8000/docs 查看API规范并尝试。

注意:AzureWakewordListeners会立即停止,但默认的WakewordListener会在识别到唤醒词后停止。

🤿 深入探讨

高级用法。

⚡️ 函数调用

使用chat_processor.add_function来使用ChatGPT函数调用。在这个例子中,get_weather将被自主调用。

# 添加函数 async def get_weather(location: str): await asyncio.sleep(1.0) return {"weather": "晴天局部多云", "temperature": 23.4} app.chat_processor.add_function( name="get_weather", description="获取给定位置的当前天气", parameters={ "type": "object", "properties": { "location": { "type": "string" } } }, func=get_weather )

而且,在get_weather被调用后,将内部自动向ChatGPT发送消息以获取语音响应。

{ "role": "function", "content": "{\"weather\": \"晴天间多云\", \"temperature\": 23.4}", "name": "get_weather" }

🔍 其他提示

开发和调试时的有用信息。

🎤 测试音频输入输出

在配置AIAvatar之前,使用以下脚本测试音频输入输出。

  • 逐步配置音频设备。
  • 如果输出设备配置正确,启动后立即发声。
  • 如果输入设备配置正确,所有识别的文本都会显示在控制台中。
  • 仅在识别到唤醒词时回应。
import asyncio import logging from aiavatar import ( AudioDevice, VoicevoxSpeechController, WakewordListener ) GOOGLE_API_KEY = "YOUR_API_KEY" VV_URL = "http://127.0.0.1:50021" VV_SPEAKER = 46 INPUT_DEVICE = -1 OUTPUT_DEVICE = -1 # 配置根日志记录器 logger = logging.getLogger() logger.setLevel(logging.INFO) log_format = logging.Formatter("[%(levelname)s] %(asctime)s : %(message)s") streamHandler = logging.StreamHandler() streamHandler.setFormatter(log_format) logger.addHandler(streamHandler) # 选择输入设备 if INPUT_DEVICE < 0: input_device_info = AudioDevice.get_input_device_with_prompt() else: input_device_info = AudioDevice.get_device_info(INPUT_DEVICE) input_device = input_device_info["index"] # 选择输出设备 if OUTPUT_DEVICE < 0: output_device_info = AudioDevice.get_output_device_with_prompt() else: output_device_info = AudioDevice.get_device_info(OUTPUT_DEVICE) output_device = output_device_info["index"] logger.info(f"输入设备: [{input_device}] {input_device_info['name']}") logger.info(f"输出设备: [{output_device}] {output_device_info['name']}") # 创建语音合成器 speaker = VoicevoxSpeechController( VV_URL, VV_SPEAKER, device_index=output_device ) asyncio.run(speaker.speak("音频设备测试器已启动。您能听到我的声音吗?")) # 创建唤醒词监听器 wakewords = ["你好"] async def on_wakeword(text): logger.info(f"唤醒词: {text}") await speaker.speak(f"{text}") wakeword_listener = WakewordListener( api_key=GOOGLE_API_KEY, wakewords=["你好"], on_wakeword=on_wakeword, verbose=True, device_index=input_device ) # 开始监听 ww_thread = wakeword_listener.start() ww_thread.join()

🎚️ 噪音过滤

在实例化AIAvatar对象时,AIAvatarKit会自动调整监听器的噪音过滤。要手动设置语音检测的噪音过滤级别,请将auto_noise_filter_threshold设置为False,并以分贝(dB)指定volume_threshold_db

app = AIAvatar( openai_api_key=OPENAI_API_KEY, google_api_key=GOOGLE_API_KEY, auto_noise_filter_threshold=False, volume_threshold_db=-40 # 将语音检测阈值设置为-40 dB )

🧪 LM Studio API

使用ChatGPTProcessor时需要一些参数。

  • base_url: LM Studio本地服务器的URL
  • model: 模型名称
  • parse_function_call_in_response: 始终设置为False
from aiavatar import AIAvatar from aiavatar.processors.chatgpt import ChatGPTProcessor chat_processor = ChatGPTProcessor( api_key=OPENAI_API_KEY, base_url="http://127.0.0.1:1234/v1", model="mmnga/DataPilot-ArrowPro-7B-KUJIRA-gguf", parse_function_call_in_response=False ) app = AIAvatar( google_api_key=GOOGLE_API_KEY, chat_processor=chat_processor ) app.start_listening_wakeword()

⚡️ 使用自定义监听器

添加您自己的原创监听器非常简单。只需让它在其他线程上运行,并在监听器处理事件时调用app.start_chat()

这里是FileSystemListener的示例,当在文件系统中发现test.txt时调用聊天。

import asyncio import os from threading import Thread from time import sleep class FileSystemListener: def __init__(self, on_file_found): self.on_file_found = on_file_found def start_listening(self): while True: # 每3秒检查一次文件 if os.path.isfile("test.txt"): asyncio.run(self.on_file_found()) sleep(3) def start(self): th = Thread(target=self.start_listening, daemon=True) th.start() return th

run.py中像这样使用这个监听器。

# 事件处理程序 def on_file_found(): asyncio.run(app.chat()) # 实例化 fs_listener = FileSystemListener(on_file_found) fs_thread = fs_listener.start() : # 等待完成 fs_thread.join()

编辑推荐精选

讯飞智文

讯飞智文

一键生成PPT和Word,让学习生活更轻松

讯飞智文是一个利用 AI 技术的项目,能够帮助用户生成 PPT 以及各类文档。无论是商业领域的市场分析报告、年度目标制定,还是学生群体的职业生涯规划、实习避坑指南,亦或是活动策划、旅游攻略等内容,它都能提供支持,帮助用户精准表达,轻松呈现各种信息。

AI办公办公工具AI工具讯飞智文AI在线生成PPTAI撰写助手多语种文档生成AI自动配图热门
讯飞星火

讯飞星火

深度推理能力全新升级,全面对标OpenAI o1

科大讯飞的星火大模型,支持语言理解、知识问答和文本创作等多功能,适用于多种文件和业务场景,提升办公和日常生活的效率。讯飞星火是一个提供丰富智能服务的平台,涵盖科技资讯、图像创作、写作辅助、编程解答、科研文献解读等功能,能为不同需求的用户提供便捷高效的帮助,助力用户轻松获取信息、解决问题,满足多样化使用场景。

热门AI开发模型训练AI工具讯飞星火大模型智能问答内容创作多语种支持智慧生活
Spark-TTS

Spark-TTS

一种基于大语言模型的高效单流解耦语音令牌文本到语音合成模型

Spark-TTS 是一个基于 PyTorch 的开源文本到语音合成项目,由多个知名机构联合参与。该项目提供了高效的 LLM(大语言模型)驱动的语音合成方案,支持语音克隆和语音创建功能,可通过命令行界面(CLI)和 Web UI 两种方式使用。用户可以根据需求调整语音的性别、音高、速度等参数,生成高质量的语音。该项目适用于多种场景,如有声读物制作、智能语音助手开发等。

Trae

Trae

字节跳动发布的AI编程神器IDE

Trae是一种自适应的集成开发环境(IDE),通过自动化和多元协作改变开发流程。利用Trae,团队能够更快速、精确地编写和部署代码,从而提高编程效率和项目交付速度。Trae具备上下文感知和代码自动完成功能,是提升开发效率的理想工具。

AI工具TraeAI IDE协作生产力转型热门
咔片PPT

咔片PPT

AI助力,做PPT更简单!

咔片是一款轻量化在线演示设计工具,借助 AI 技术,实现从内容生成到智能设计的一站式 PPT 制作服务。支持多种文档格式导入生成 PPT,提供海量模板、智能美化、素材替换等功能,适用于销售、教师、学生等各类人群,能高效制作出高品质 PPT,满足不同场景演示需求。

讯飞绘文

讯飞绘文

选题、配图、成文,一站式创作,让内容运营更高效

讯飞绘文,一个AI集成平台,支持写作、选题、配图、排版和发布。高效生成适用于各类媒体的定制内容,加速品牌传播,提升内容营销效果。

热门AI辅助写作AI工具讯飞绘文内容运营AI创作个性化文章多平台分发AI助手
材料星

材料星

专业的AI公文写作平台,公文写作神器

AI 材料星,专业的 AI 公文写作辅助平台,为体制内工作人员提供高效的公文写作解决方案。拥有海量公文文库、9 大核心 AI 功能,支持 30 + 文稿类型生成,助力快速完成领导讲话、工作总结、述职报告等材料,提升办公效率,是体制打工人的得力写作神器。

openai-agents-python

openai-agents-python

OpenAI Agents SDK,助力开发者便捷使用 OpenAI 相关功能。

openai-agents-python 是 OpenAI 推出的一款强大 Python SDK,它为开发者提供了与 OpenAI 模型交互的高效工具,支持工具调用、结果处理、追踪等功能,涵盖多种应用场景,如研究助手、财务研究等,能显著提升开发效率,让开发者更轻松地利用 OpenAI 的技术优势。

Hunyuan3D-2

Hunyuan3D-2

高分辨率纹理 3D 资产生成

Hunyuan3D-2 是腾讯开发的用于 3D 资产生成的强大工具,支持从文本描述、单张图片或多视角图片生成 3D 模型,具备快速形状生成能力,可生成带纹理的高质量 3D 模型,适用于多个领域,为 3D 创作提供了高效解决方案。

3FS

3FS

一个具备存储、管理和客户端操作等多种功能的分布式文件系统相关项目。

3FS 是一个功能强大的分布式文件系统项目,涵盖了存储引擎、元数据管理、客户端工具等多个模块。它支持多种文件操作,如创建文件和目录、设置布局等,同时具备高效的事件循环、节点选择和协程池管理等特性。适用于需要大规模数据存储和管理的场景,能够提高系统的性能和可靠性,是分布式存储领域的优质解决方案。

下拉加载更多