Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
41 commits
Select commit Hold shift + click to select a range
28015e0
feat: initial rtc integration
zhangqianze May 6, 2025
e8fa25f
feat: rtc is now connecting with agents
zhangqianze May 7, 2025
a3787e0
Merge remote-tracking branch 'origin' into feat/designer-rtc
zhangqianze May 9, 2025
b621bb3
Merge remote-tracking branch 'origin' into feat/designer-rtc
zhangqianze May 13, 2025
ddff84e
feat: get info from agora_rtc extension automatically
zhangqianze May 14, 2025
b93f4fa
Merge remote-tracking branch 'origin' into feat/designer-rtc
zhangqianze May 14, 2025
68ea345
feat: add uid/channel support
zhangqianze May 14, 2025
976d51d
feat: initial support for camera/mic picker
zhangqianze May 14, 2025
abca4be
feat: add proper support for screen/camera tracks
zhangqianze May 15, 2025
3fac9d0
feat: add support for trulience configs
zhangqianze May 15, 2025
552f441
fix: fix trulience avatar class
zhangqianze May 15, 2025
88ac057
fix: fix trulience styles
zhangqianze May 19, 2025
f0c05b9
Merge remote-tracking branch 'origin' into feat/designer-rtc
zhangqianze May 19, 2025
6645b63
fix: update env variables
zhangqianze May 19, 2025
c25fa8f
feat: add manager apps menu
zhangqianze May 19, 2025
389e2ad
Merge branch 'main' into feat/designer-rtc
halajohn May 20, 2025
abae90d
Merge branch 'main' into feat/designer-rtc
halajohn May 21, 2025
edb8df7
Merge branch 'main' into feat/designer-rtc
plutoless May 23, 2025
e1b5185
feat: moving heygen code
zhangqianze May 23, 2025
1eb3307
feat: add manifest
zhangqianze May 23, 2025
b607a22
feat: initial attempt
zhangqianze May 26, 2025
edb6a40
feat: fix bugs
zhangqianze May 27, 2025
bb3d23f
Merge remote-tracking branch 'origin' into feat/heygen-agora
zhangqianze May 29, 2025
89e9375
fix: heygen updates
zhangqianze May 29, 2025
e211bbb
fix non token and audio
benagora Jun 4, 2025
fa848d8
Merge branch 'main' into feat/heygen-agora
zhangqianze Jun 5, 2025
a646447
Merge remote-tracking branch 'origin' into feat/heygen-agora
zhangqianze Jun 5, 2025
7d75742
feat: change subscribe logic
zhangqianze Jun 5, 2025
be72c85
feat: update to fix bugs
zhangqianze Jun 5, 2025
270dcb1
feat:update to make playground auto adapt to avatar feature
zhangqianze Jun 5, 2025
6c2121b
feat: change to init/destroy rtc when connecting/disconnecting
zhangqianze Jun 10, 2025
1adf7d3
feat: support auto session clearance when starting
zhangqianze Jun 10, 2025
3a20462
fix downsample
benagora Jun 17, 2025
dd3f42a
Merge branch 'feat/heygen-agora' of https://github.com/TEN-framework/…
benagora Jun 17, 2025
999c8f3
generic_video protocol for future integrations
benagora Aug 27, 2025
625f195
support adding configs in property.json
benagora Aug 27, 2025
1829cb7
improve protocol
benagora Sep 1, 2025
e6b5951
websocket reconnect improved
benagora Sep 1, 2025
7cfb0b1
attemp reconnects to websocket, if not successful after 3 attempts th…
benagora Sep 2, 2025
a18a681
style: format heygen_avatar_python extension with Black
Nov 3, 2025
a5d8483
feat: sync heygen_avatar_python with feat/heygen-agora-migrated branch
Nov 3, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions ai_agents/.env.example
Original file line number Diff line number Diff line change
Expand Up @@ -148,3 +148,6 @@ DUBVERSE_TTS_KEY=

# Groq Cloud API Key
GROQ_CLOUD_API_KEY=

# Heygen Avatar API Key
HEYGEN_API_KEY=
88 changes: 54 additions & 34 deletions ai_agents/agents/examples/default/property.json
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
"predefined_graphs": [
{
"name": "voice_assistant",
"auto_start": true,
"auto_start": false,
"nodes": [
{
"type": "extension",
Expand All @@ -12,7 +12,7 @@
"extension_group": "default",
"property": {
"app_id": "${env:AGORA_APP_ID}",
"app_certificate": "${env:AGORA_APP_CERTIFICATE|}",
"token": "<agora_token>",
"channel": "ten_agent_test",
"stream_id": 1234,
"remote_stream_id": 123,
Expand Down Expand Up @@ -267,28 +267,28 @@
},
{
"name": "voice_assistant_integrated_stt",
"auto_start": false,
"auto_start": true,
"nodes": [
{
"type": "extension",
"name": "agora_rtc",
"addon": "agora_rtc",
"extension_group": "default",
"property": {
"enable_agora_asr": true,
"agora_asr_vendor_name": "microsoft",
"app_id": "${env:AGORA_APP_ID}",
"token": "<agora_token>",
"channel": "ten_agent_test",
"stream_id": 1234,
"remote_stream_id": 123,
"subscribe_audio": true,
"publish_audio": true,
"publish_data": true,
"enable_agora_asr": true,
"agora_asr_vendor_name": "microsoft",
"agora_asr_language": "en-US",
"remote_stream_id": 123,
"agora_asr_vendor_region": "${env:AZURE_STT_REGION|}",
"publish_audio": true,
"app_certificate": "${env:AGORA_APP_CERTIFICATE|}",
"agora_asr_session_control_file_path": "session_control.conf",
"app_id": "${env:AGORA_APP_ID}",
"agora_asr_vendor_key": "${env:AZURE_STT_KEY|}",
"stream_id": 1234
"agora_asr_vendor_region": "${env:AZURE_STT_REGION|}",
"agora_asr_session_control_file_path": "session_control.conf"
}
},
{
Expand Down Expand Up @@ -343,6 +343,26 @@
"property": {
"api_key": "${env:WEATHERAPI_API_KEY|}"
}
},
{
"type": "extension",
"name": "avatar",
"addon": "generic_video_python",
"extension_group": "default",
"property": {
"agora_appid": "${env:AGORA_APP_ID}",
"agora_appcert": "${env:AGORA_APP_CERTIFICATE}",
"agora_channel_name": "ten_agent_test",
"agora_avatar_uid": 12345,
"input_audio_sample_rate": 48000,
"avatar_id": "abc123",
"video_encoding": "H264",
"enable_string_uid": true,
"activity_idle_timeout": 60,
"generic_video_api_key": "${env:GENERIC_VIDEO_API_KEY}",
"start_endpoint": "http://oai.agora.io:8764/session/start",
"stop_endpoint": "http://oai.agora.io:8764/session/stop"
}
}
],
"connections": [
Expand Down Expand Up @@ -444,59 +464,59 @@
]
},
{
"extension": "tts",
"extension": "interrupt_detector",
"cmd": [
{
"name": "flush",
"dest": [
{
"extension": "agora_rtc"
"extension": "llm"
}
]
}
],
"audio_frame": [
"data": [
{
"name": "pcm_frame",
"name": "text_data",
"dest": [
{
"extension": "agora_rtc"
"extension": "llm"
}
]
}
]
},
{
"extension": "interrupt_detector",
"extension": "weatherapi_tool_python",
"cmd": [
{
"name": "flush",
"name": "tool_register",
"dest": [
{
"extension": "llm"
}
]
}
],
"data": [
]
},
{
"extension": "tts",
"cmd": [
{
"name": "text_data",
"name": "flush",
"dest": [
{
"extension": "llm"
"extension": "avatar"
}
]
}
]
},
{
"extension": "weatherapi_tool_python",
"cmd": [
],
"audio_frame": [
{
"name": "tool_register",
"name": "pcm_frame",
"dest": [
{
"extension": "llm"
"extension": "avatar"
}
]
}
Expand All @@ -515,7 +535,7 @@
"extension_group": "rtc",
"property": {
"app_id": "${env:AGORA_APP_ID}",
"app_certificate": "${env:AGORA_APP_CERTIFICATE|}",
"token": "",
"channel": "ten_agent_test",
"stream_id": 1234,
"remote_stream_id": 123,
Expand Down Expand Up @@ -689,7 +709,7 @@
"extension_group": "default",
"property": {
"app_id": "${env:AGORA_APP_ID}",
"app_certificate": "${env:AGORA_APP_CERTIFICATE|}",
"token": "<agora_token>",
"channel": "ten_agent_test",
"stream_id": 1234,
"remote_stream_id": 123,
Expand Down Expand Up @@ -950,7 +970,7 @@
"extension_group": "default",
"property": {
"app_id": "${env:AGORA_APP_ID}",
"app_certificate": "${env:AGORA_APP_CERTIFICATE|}",
"token": "<agora_token>",
"channel": "ten_agent_test",
"stream_id": 1234,
"remote_stream_id": 123,
Expand Down Expand Up @@ -1191,7 +1211,7 @@
"extension_group": "rtc",
"property": {
"app_id": "${env:AGORA_APP_ID}",
"app_certificate": "${env:AGORA_APP_CERTIFICATE|}",
"token": "",
"channel": "ten_agent_test",
"stream_id": 1234,
"remote_stream_id": 123,
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
# generic_video_python

<!-- brief introduction for the extension -->

## Features

<!-- main features introduction -->

- xxx feature

## API

Refer to `api` definition in [manifest.json] and default values in [property.json](property.json).

<!-- Additional API.md can be referred to if extra introduction needed -->

## Development

### Build

<!-- build dependencies and steps -->

### Unit test

<!-- how to do unit test for the extension -->

## Misc

<!-- others if applicable -->
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
#
# This file is part of TEN Framework, an open source project.
# Licensed under the Apache License, Version 2.0.
# See the LICENSE file for more information.
#
from . import addon
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
#
# This file is part of TEN Framework, an open source project.
# Licensed under the Apache License, Version 2.0.
# See the LICENSE file for more information.
#
from ten import (
Addon,
register_addon_as_extension,
TenEnv,
)
from .extension import GenericVideoExtension


@register_addon_as_extension("generic_video_python")
class GenericVideoExtensionAddon(Addon):
def on_create_instance(self, ten_env: TenEnv, name: str, context) -> None:
ten_env.log_info("on_create_instance")
ten_env.on_create_instance_done(GenericVideoExtension(name), context)
Loading
Loading