From 30d3ef60049cddfb2af75b6e44f786d253dbaddd Mon Sep 17 00:00:00 2001 From: Nitwel Date: Fri, 15 Mar 2024 00:13:05 +0100 Subject: [PATCH 1/4] add initial work for voice assistant --- content/main.tscn | 5 +- content/system/assist/assist.gd | 50 +++++++++++++++ content/system/assist/assist.tscn | 17 +++++ default_bus_layout.tres | 3 + export_presets.cfg | 4 +- lib/globals/house_body.gd | 2 +- lib/home_apis/hass_ws/handlers/assist.gd | 70 +++++++++++++++++++++ lib/home_apis/hass_ws/hass.gd | 15 ++++- lib/utils/sample_hold.gd | 11 ++++ lib/utils/sample_hold.tscn | 8 +++ project.godot | 4 ++ test/lib/utils/sample_hold/sample_hold.gd | 35 +++++++++++ test/lib/utils/sample_hold/sample_hold.tscn | 3 + 13 files changed, 222 insertions(+), 5 deletions(-) create mode 100644 content/system/assist/assist.gd create mode 100644 content/system/assist/assist.tscn create mode 100644 default_bus_layout.tres create mode 100644 lib/home_apis/hass_ws/handlers/assist.gd create mode 100644 lib/utils/sample_hold.gd create mode 100644 lib/utils/sample_hold.tscn create mode 100644 test/lib/utils/sample_hold/sample_hold.gd create mode 100644 test/lib/utils/sample_hold/sample_hold.tscn diff --git a/content/main.tscn b/content/main.tscn index 421b116..b852603 100644 --- a/content/main.tscn +++ b/content/main.tscn @@ -1,4 +1,4 @@ -[gd_scene load_steps=16 format=3 uid="uid://eecv28y6jxk4"] +[gd_scene load_steps=17 format=3 uid="uid://eecv28y6jxk4"] [ext_resource type="PackedScene" uid="uid://clc5dre31iskm" path="res://addons/godot-xr-tools/xr/start_xr.tscn" id="1_i4c04"] [ext_resource type="Script" path="res://content/main.gd" id="1_uvrd4"] @@ -11,6 +11,7 @@ [ext_resource type="PackedScene" uid="uid://c3kdssrmv84kv" path="res://content/ui/menu/menu.tscn" id="8_du83w"] [ext_resource type="PackedScene" uid="uid://lrehk38exd5n" path="res://content/system/keyboard/keyboard.tscn" id="9_e5n3p"] [ext_resource type="PackedScene" uid="uid://cbemihbxkd4ll" path="res://content/system/house/house.tscn" id="9_np6mw"] +[ext_resource type="PackedScene" uid="uid://oydbwnek6xb4" path="res://content/system/assist/assist.tscn" id="12_8av8q"] [sub_resource type="Sky" id="Sky_vhymk"] sky_material = ExtResource("5_wgwf8") @@ -83,4 +84,6 @@ transform = Transform3D(0.499999, -0.000139169, -6.50204e-05, 5.24307e-05, 0.353 [node name="House" parent="." instance=ExtResource("9_np6mw")] +[node name="Assist" parent="." instance=ExtResource("12_8av8q")] + [editable path="XROrigin3D/XRControllerLeft"] diff --git a/content/system/assist/assist.gd b/content/system/assist/assist.gd new file mode 100644 index 0000000..e277c3d --- /dev/null +++ b/content/system/assist/assist.gd @@ -0,0 +1,50 @@ +extends Node3D + +const sample_hold = preload ("res://lib/utils/sample_hold.gd") + +const audio_freq = 44100 +const target_freq = 16000 +const sample_rate_ratio: float = audio_freq / target_freq * 1.5 + +var effect: AudioEffectCapture +@export var input_threshold: float = 0.05 +@onready var audio_recorder: AudioStreamPlayer = $AudioStreamRecord +@onready var timer: Timer = $Timer + +func _ready(): + var index = AudioServer.get_bus_index("Record") + effect = AudioServer.get_bus_effect(index, 0) + + timer.timeout.connect(func(): + HomeApi.api.assist_handler.send_data(PackedByteArray()) + ) + +func _process(_delta): + var sterioData: PackedVector2Array = effect.get_buffer(effect.get_frames_available()) + + if sterioData.size() == 0: + return + + var monoSampled := sample_hold.sample_and_hold(sterioData, sample_rate_ratio) + + # 16 bit PCM + var data := PackedByteArray() + data.resize(monoSampled.size() * 2) + + var max_amplitude = 0.0 + + for i in range(monoSampled.size()): + + var value = monoSampled[i] + max_amplitude = max(max_amplitude, value) + + data.encode_s16(i * 2, int(value * 32767)) + + if max_amplitude > input_threshold: + if timer.is_stopped(): + HomeApi.api.assist_handler.start_wakeword() + + timer.start() + + if timer.is_stopped() == false: + HomeApi.api.assist_handler.send_data(data) \ No newline at end of file diff --git a/content/system/assist/assist.tscn b/content/system/assist/assist.tscn new file mode 100644 index 0000000..86b284b --- /dev/null +++ b/content/system/assist/assist.tscn @@ -0,0 +1,17 @@ +[gd_scene load_steps=3 format=3 uid="uid://oydbwnek6xb4"] + +[ext_resource type="Script" path="res://content/system/assist/assist.gd" id="1_5obhy"] + +[sub_resource type="AudioStreamMicrophone" id="AudioStreamMicrophone_6tv2x"] + +[node name="Assist" type="Node3D"] +script = ExtResource("1_5obhy") + +[node name="AudioStreamRecord" type="AudioStreamPlayer" parent="."] +stream = SubResource("AudioStreamMicrophone_6tv2x") +autoplay = true +bus = &"Record" + +[node name="Timer" type="Timer" parent="."] +wait_time = 2.0 +one_shot = true diff --git a/default_bus_layout.tres b/default_bus_layout.tres new file mode 100644 index 0000000..7386b28 --- /dev/null +++ b/default_bus_layout.tres @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:fb9d247646174775b00db7902c224ac62f734b3a6467af32919d12d2a6861c38 +size 555 diff --git a/export_presets.cfg b/export_presets.cfg index 1ef519e..76601c7 100644 --- a/export_presets.cfg +++ b/export_presets.cfg @@ -155,7 +155,7 @@ permissions/receive_boot_completed=false permissions/receive_mms=false permissions/receive_sms=false permissions/receive_wap_push=false -permissions/record_audio=false +permissions/record_audio=true permissions/reorder_tasks=false permissions/restart_packages=false permissions/send_respond_via_message=false @@ -377,7 +377,7 @@ permissions/receive_boot_completed=false permissions/receive_mms=false permissions/receive_sms=false permissions/receive_wap_push=false -permissions/record_audio=false +permissions/record_audio=true permissions/reorder_tasks=false permissions/restart_packages=false permissions/send_respond_via_message=false diff --git a/lib/globals/house_body.gd b/lib/globals/house_body.gd index c10f30a..4b0b520 100644 --- a/lib/globals/house_body.gd +++ b/lib/globals/house_body.gd @@ -1,3 +1,3 @@ extends Node -@onready var body = get_node("/root/Main/House") \ No newline at end of file +@onready var body = get_node_or_null("/root/Main/House") \ No newline at end of file diff --git a/lib/home_apis/hass_ws/handlers/assist.gd b/lib/home_apis/hass_ws/handlers/assist.gd new file mode 100644 index 0000000..d0601ee --- /dev/null +++ b/lib/home_apis/hass_ws/handlers/assist.gd @@ -0,0 +1,70 @@ +const HASS_API = preload ("../hass.gd") + +var api: HASS_API +var pipe_running := false +var handler_id := 0 + +func _init(hass: HASS_API): + self.api = hass + +func on_connect(): + pass + +func start_wakeword(): + if pipe_running: + return + + print("wake start") + + api.send_packet({ + "type": "assist_pipeline/run", + "start_stage": "wake_word", + "end_stage": "intent", + "input": { + "timeout": 5, + "sample_rate": 16000 + }, + "timeout": 60 + }, true) + +func send_data(data: PackedByteArray): + + # prepend the handler id to the data in 8 bits + if pipe_running: + var stream = PackedByteArray() + + stream.resize(1) + stream.encode_s8(0, handler_id) + stream.append_array(data) + + print("sending data") + + api.send_raw(stream) + +func handle_message(message: Dictionary): + if message["type"] != "event": + return + + var event = message["event"] + + if event.has("type") == false: + return + + print(event["type"]) + + match event["type"]: + "run-start": + print("Pipeline started") + pipe_running = true + handler_id = event["data"]["runner_data"]["stt_binary_handler_id"] + "run-end": + pipe_running = false + handler_id = 0 + "wake_word-start": + # handle trigger message + pass + "wake_word-end": + # handle trigger message + pass + _: + pass diff --git a/lib/home_apis/hass_ws/hass.gd b/lib/home_apis/hass_ws/hass.gd index ceca25e..91907e9 100644 --- a/lib/home_apis/hass_ws/hass.gd +++ b/lib/home_apis/hass_ws/hass.gd @@ -2,6 +2,7 @@ extends Node const AuthHandler = preload ("./handlers/auth.gd") const IntegrationHandler = preload ("./handlers/integration.gd") +const AssistHandler = preload ("./handlers/assist.gd") signal on_connect() signal on_disconnect() @@ -25,6 +26,7 @@ var packet_callbacks := CallbackMap.new() var auth_handler: AuthHandler var integration_handler: IntegrationHandler +var assist_handler: AssistHandler func _init(url:=self.url, token:=self.token): self.url = url @@ -32,6 +34,7 @@ func _init(url:=self.url, token:=self.token): auth_handler = AuthHandler.new(self, url, token) integration_handler = IntegrationHandler.new(self) + assist_handler = AssistHandler.new(self) devices_template = devices_template.replace("\n", " ").replace("\t", "").replace("\r", " ") connect_ws() @@ -82,6 +85,7 @@ func handle_packet(packet: Dictionary): if LOG_MESSAGES: print("Received packet: %s" % str(packet).substr(0, 1000)) auth_handler.handle_message(packet) + assist_handler.handle_message(packet) if packet.has("id"): packet_callbacks.call_key(int(packet.id), [packet]) @@ -117,6 +121,7 @@ func start_subscriptions(): func handle_connect(): integration_handler.on_connect() + assist_handler.on_connect() connected = true on_connect.emit() @@ -176,7 +181,15 @@ func send_request_packet(packet: Dictionary, ignore_initial:=false): return await promise.settled -func send_packet(packet: Dictionary): +func send_raw(packet: PackedByteArray): + if LOG_MESSAGES: print("Sending binary: %s" % packet.hex_encode()) + socket.send(packet) + +func send_packet(packet: Dictionary, with_id:=false): + if with_id: + packet.id = id + id += 1 + if LOG_MESSAGES: print("Sending packet: %s" % encode_packet(packet)) socket.send_text(encode_packet(packet)) diff --git a/lib/utils/sample_hold.gd b/lib/utils/sample_hold.gd new file mode 100644 index 0000000..97f25c5 --- /dev/null +++ b/lib/utils/sample_hold.gd @@ -0,0 +1,11 @@ +static func sample_and_hold(data: PackedVector2Array, sample_rate: float) -> PackedFloat32Array: + var new_data: PackedFloat32Array = PackedFloat32Array() + new_data.resize(int(data.size() / sample_rate)) + + var counter = 0.0 + + for i in range(new_data.size()): + new_data[i] = data[int(counter)].y + counter += sample_rate + + return new_data \ No newline at end of file diff --git a/lib/utils/sample_hold.tscn b/lib/utils/sample_hold.tscn new file mode 100644 index 0000000..9cc2184 --- /dev/null +++ b/lib/utils/sample_hold.tscn @@ -0,0 +1,8 @@ +[gd_scene load_steps=2 format=3 uid="uid://b4l22m7bxamsc"] + +[ext_resource type="Script" path="res://test/lib/utils/sample_hold/sample_hold.gd" id="1_t0y35"] + +[node name="Node2D" type="Node2D"] +script = ExtResource("1_t0y35") + +[node name="CanvasLayer" type="CanvasLayer" parent="."] diff --git a/project.godot b/project.godot index 0ca5bc8..ef8aca1 100644 --- a/project.godot +++ b/project.godot @@ -15,6 +15,10 @@ run/main_scene="res://content/main.tscn" config/features=PackedStringArray("4.2", "Mobile") config/icon="res://assets/logo.png" +[audio] + +driver/enable_input=true + [autoload] XRToolsUserSettings="*res://addons/godot-xr-tools/user_settings/user_settings.gd" diff --git a/test/lib/utils/sample_hold/sample_hold.gd b/test/lib/utils/sample_hold/sample_hold.gd new file mode 100644 index 0000000..f8be129 --- /dev/null +++ b/test/lib/utils/sample_hold/sample_hold.gd @@ -0,0 +1,35 @@ +@tool +extends Node2D + +const sample_hold = preload ("res://lib/utils/sample_hold.gd") + +var data = PackedVector2Array() +var result: PackedFloat32Array + +func _ready(): + print("test") + for i in range(0, 44100): + var value = sin(i * 2 * PI / 44100.0) + data.push_back(Vector2(value, value)) + + result = sample_hold.sample_and_hold(data, 44100.0 / 16000.0 * 1.5) + +func _draw(): + var size = get_viewport().get_visible_rect().size + size.x *= 10 + size.y *= 4 + var center = size / 2 + + draw_line(Vector2(0, size.y / 2), Vector2(size.x, size.y / 2), Color(1, 1, 1)) + + for i in range(0, data.size()): + var value = data[i] + var x = i * (size.x / data.size()) + + draw_line(Vector2(x, 0), Vector2(x, value.x * center.y), Color(1, 0, 0)) + + for i in range(0, result.size()): + var value = result[i] + var x = i * (size.x / result.size()) + + draw_line(Vector2(x, 0), Vector2(x, value * center.y), Color(0, 1, 0)) \ No newline at end of file diff --git a/test/lib/utils/sample_hold/sample_hold.tscn b/test/lib/utils/sample_hold/sample_hold.tscn new file mode 100644 index 0000000..cba1c37 --- /dev/null +++ b/test/lib/utils/sample_hold/sample_hold.tscn @@ -0,0 +1,3 @@ +[gd_scene format=3 uid="uid://bpy811vonnq2u"] + +[node name="Node2D" type="Node2D"] From aff66884ca69462e226bfb6b0c12fa63d89507f0 Mon Sep 17 00:00:00 2001 From: Nitwel Date: Fri, 15 Mar 2024 18:27:03 +0100 Subject: [PATCH 2/4] finish basic voice assistant --- assets/chat_bubble.blend | 3 + assets/chat_bubble.blend1 | Bin 0 -> 894176 bytes assets/models/chat_bubble/chat_bubble.glb | 3 + .../models/chat_bubble/chat_bubble.glb.import | 34 ++++++++ content/main.tscn | 1 + content/system/assist/assist.gd | 69 +++++++++++++-- content/system/assist/assist.tscn | 22 ++++- content/system/assist/chat.gd | 37 ++++++++ content/system/assist/chat.tscn | 33 +++++++ content/system/assist/loader.gd | 42 +++++++++ content/system/assist/loader.tscn | 6 ++ content/ui/components/input/text_handler.gd | 7 +- lib/home_apis/hass_ws/handlers/assist.gd | 82 ++++++++++++++++-- lib/utils/font_tools.gd | 9 ++ 14 files changed, 328 insertions(+), 20 deletions(-) create mode 100644 assets/chat_bubble.blend create mode 100644 assets/chat_bubble.blend1 create mode 100644 assets/models/chat_bubble/chat_bubble.glb create mode 100644 assets/models/chat_bubble/chat_bubble.glb.import create mode 100644 content/system/assist/chat.gd create mode 100644 content/system/assist/chat.tscn create mode 100644 content/system/assist/loader.gd create mode 100644 content/system/assist/loader.tscn create mode 100644 lib/utils/font_tools.gd diff --git a/assets/chat_bubble.blend b/assets/chat_bubble.blend new file mode 100644 index 0000000..f944d04 --- /dev/null +++ b/assets/chat_bubble.blend @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c5fa5f006a42d87f43a8b411e4e4bf64a8b4fbbaedd0d02579134a8fa59161eb +size 894176 diff --git a/assets/chat_bubble.blend1 b/assets/chat_bubble.blend1 new file mode 100644 index 0000000000000000000000000000000000000000..6ee4542c1c29a15ef70449a1c83850028688196b GIT binary patch literal 894176 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 input_threshold: - if timer.is_stopped(): + if audio_timer.is_stopped(): HomeApi.api.assist_handler.start_wakeword() - timer.start() + audio_timer.start() - if timer.is_stopped() == false: - HomeApi.api.assist_handler.send_data(data) \ No newline at end of file + if audio_timer.is_stopped() == false: + HomeApi.api.assist_handler.send_data(data) diff --git a/content/system/assist/assist.tscn b/content/system/assist/assist.tscn index 86b284b..1356257 100644 --- a/content/system/assist/assist.tscn +++ b/content/system/assist/assist.tscn @@ -1,6 +1,8 @@ -[gd_scene load_steps=3 format=3 uid="uid://oydbwnek6xb4"] +[gd_scene load_steps=5 format=3 uid="uid://oydbwnek6xb4"] [ext_resource type="Script" path="res://content/system/assist/assist.gd" id="1_5obhy"] +[ext_resource type="PackedScene" uid="uid://cy6jklyde3pgo" path="res://content/system/assist/chat.tscn" id="2_laew1"] +[ext_resource type="PackedScene" uid="uid://b0d1582vpkr8m" path="res://content/system/assist/loader.tscn" id="3_25iy1"] [sub_resource type="AudioStreamMicrophone" id="AudioStreamMicrophone_6tv2x"] @@ -12,6 +14,22 @@ stream = SubResource("AudioStreamMicrophone_6tv2x") autoplay = true bus = &"Record" -[node name="Timer" type="Timer" parent="."] +[node name="AudioTimer" type="Timer" parent="."] wait_time = 2.0 one_shot = true + +[node name="AudioStreamPlayer3D" type="AudioStreamPlayer3D" parent="."] + +[node name="VisualTimer" type="Timer" parent="."] +wait_time = 4.0 +one_shot = true + +[node name="ChatUser" parent="." instance=ExtResource("2_laew1")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.109997, 0.025, 0) +flip = false + +[node name="ChatAssistant" parent="." instance=ExtResource("2_laew1")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.0499932, -0.025, 0) +text = "Hello, World!" + +[node name="Loader" parent="." instance=ExtResource("3_25iy1")] diff --git a/content/system/assist/chat.gd b/content/system/assist/chat.gd new file mode 100644 index 0000000..2cd61a2 --- /dev/null +++ b/content/system/assist/chat.gd @@ -0,0 +1,37 @@ +@tool +extends Node3D + +const FontTools = preload ("res://lib/utils/font_tools.gd") + +@onready var label: Label3D = $Label3D +@onready var chat: Skeleton3D = $chat_bubble/Armature/Skeleton3D +@onready var model: MeshInstance3D = $chat_bubble/Armature/Skeleton3D/Cube + +@export var text := "Hello, World!": + set(value): + if !is_node_ready(): await ready + + text = value + label.text = value + update() + +@export var flip: bool = false: + set(value): + if !is_node_ready(): await ready + + flip = value + model.rotation_degrees.x = -90 if value else 90 + +const base_width = 0.8 * 0.2 + +func update(): + var text_width = FontTools.get_font_size(label).x + + var offset = (text_width - base_width) / 0.2 + + offset = max(0.0, offset) + + if flip: + offset = -offset + + chat.set_bone_pose_position(1 if flip else 0, Vector3(0, offset, 0)) \ No newline at end of file diff --git a/content/system/assist/chat.tscn b/content/system/assist/chat.tscn new file mode 100644 index 0000000..6d1136a --- /dev/null +++ b/content/system/assist/chat.tscn @@ -0,0 +1,33 @@ +[gd_scene load_steps=5 format=3 uid="uid://cy6jklyde3pgo"] + +[ext_resource type="PackedScene" uid="uid://b12raorbby1xd" path="res://assets/models/chat_bubble/chat_bubble.glb" id="1_lsdcs"] +[ext_resource type="Script" path="res://content/system/assist/chat.gd" id="1_rbrak"] +[ext_resource type="Material" uid="uid://bujy3egn1oqac" path="res://assets/materials/pri-500.material" id="2_ps3pl"] +[ext_resource type="FontVariation" uid="uid://d2ofyimg5s65q" path="res://assets/fonts/ui_font_500.tres" id="4_gxfp3"] + +[node name="Chat" type="Node3D"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 3.41237e-06, 0, 0) +script = ExtResource("1_rbrak") +text = "Hello World" +flip = true + +[node name="chat_bubble" parent="." instance=ExtResource("1_lsdcs")] +transform = Transform3D(0.2, 0, 0, 0, 0.2, 0, 0, 0, 0.2, -0.0154175, 0, 0.0710473) + +[node name="Armature" parent="chat_bubble" index="0"] +transform = Transform3D(1, 0, 0, 0, 0, 1, 0, -1, 0, 0.5, 0, 0) + +[node name="Cube" parent="chat_bubble/Armature/Skeleton3D" index="0"] +transform = Transform3D(-4.37114e-08, -1, -4.37114e-08, 0, -4.37114e-08, 1, -1, 4.37114e-08, 1.91069e-15, 0, 0.35, 0) +material_override = ExtResource("2_ps3pl") + +[node name="Label3D" type="Label3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0.006) +pixel_size = 0.001 +text = "Hello World" +font = ExtResource("4_gxfp3") +font_size = 20 +outline_size = 0 +horizontal_alignment = 0 + +[editable path="chat_bubble"] diff --git a/content/system/assist/loader.gd b/content/system/assist/loader.gd new file mode 100644 index 0000000..838be69 --- /dev/null +++ b/content/system/assist/loader.gd @@ -0,0 +1,42 @@ +@tool +extends Node3D + +const material: StandardMaterial3D = preload ("res://assets/materials/pri-500.material") +var time: float = 0.0 +const DOT_COUNT = 8 +const RADIUS = 0.025 + +func _ready(): + generate_meshes() + +func generate_meshes(): + for i in range(DOT_COUNT): + var mesh := MeshInstance3D.new() + mesh.mesh = CylinderMesh.new() + mesh.mesh.top_radius = 0.005 + mesh.mesh.bottom_radius = 0.005 + mesh.mesh.height = 0.005 + mesh.material_override = material.duplicate() + mesh.material_override.transparency = BaseMaterial3D.TRANSPARENCY_ALPHA + + add_child(mesh) + + mesh.position = Vector3(sin(i * PI / DOT_COUNT * 2), cos(i * PI / DOT_COUNT * 2), 0) * RADIUS + mesh.rotation_degrees = Vector3(90, 0, 0) + +func _process(delta): + if !visible: + return + + time += delta + + for i in range(get_child_count()): + var mesh := get_child(i) + + if mesh == null: + return + + mesh.material_override.albedo_color.a = saw_tooth(i / float(get_child_count()) + time) + +func saw_tooth(x: float) -> float: + return 1 - fmod(x, 1) \ No newline at end of file diff --git a/content/system/assist/loader.tscn b/content/system/assist/loader.tscn new file mode 100644 index 0000000..2cc43de --- /dev/null +++ b/content/system/assist/loader.tscn @@ -0,0 +1,6 @@ +[gd_scene load_steps=2 format=3 uid="uid://b0d1582vpkr8m"] + +[ext_resource type="Script" path="res://content/system/assist/loader.gd" id="1_3bi3s"] + +[node name="Loader" type="Node3D"] +script = ExtResource("1_3bi3s") diff --git a/content/ui/components/input/text_handler.gd b/content/ui/components/input/text_handler.gd index 51bef8b..9679eac 100644 --- a/content/ui/components/input/text_handler.gd +++ b/content/ui/components/input/text_handler.gd @@ -1,5 +1,7 @@ extends RefCounted +const FontTools = preload ("res://lib/utils/font_tools.gd") + var label: Label3D var text: String = "" @@ -73,14 +75,13 @@ func _calculate_caret_position(click_pos_x: float): return gap_offsets.size() - 1 func _calculate_text_gaps(): - var font = label.get_font() var offsets = [0.0] for i in range(text.length()): var chars = text.substr(0, i + 1) # Can't use single chars because of kerning. - var size = font.get_string_size(chars, HORIZONTAL_ALIGNMENT_CENTER, -1, label.font_size) + var size = FontTools.get_font_size(label, chars) - offsets.append(size.x * label.pixel_size) + offsets.append(size.x) return offsets diff --git a/lib/home_apis/hass_ws/handlers/assist.gd b/lib/home_apis/hass_ws/handlers/assist.gd index d0601ee..a7fac54 100644 --- a/lib/home_apis/hass_ws/handlers/assist.gd +++ b/lib/home_apis/hass_ws/handlers/assist.gd @@ -1,8 +1,36 @@ const HASS_API = preload ("../hass.gd") +signal on_wake_word(wake_word: String) +signal on_stt_message(message: String) +signal on_tts_message(message: String) +signal on_tts_sound(sound: AudioStreamMP3) + var api: HASS_API var pipe_running := false var handler_id := 0 +var wake_word = null: + set(value): + if value != wake_word&&value != null: + on_wake_word.emit(value) + wake_word = value + +var stt_message = null: + set(value): + if value != stt_message&&value != null: + on_stt_message.emit(value) + stt_message = value + +var tts_message = null: + set(value): + if value != tts_message&&value != null: + on_tts_message.emit(value) + tts_message = value + +var tts_sound = null: + set(value): + if value != tts_sound&&value != null: + on_tts_sound.emit(value) + tts_sound = value func _init(hass: HASS_API): self.api = hass @@ -19,7 +47,7 @@ func start_wakeword(): api.send_packet({ "type": "assist_pipeline/run", "start_stage": "wake_word", - "end_stage": "intent", + "end_stage": "tts", "input": { "timeout": 5, "sample_rate": 16000 @@ -50,21 +78,59 @@ func handle_message(message: Dictionary): if event.has("type") == false: return - print(event["type"]) + print(message) match event["type"]: "run-start": print("Pipeline started") pipe_running = true handler_id = event["data"]["runner_data"]["stt_binary_handler_id"] + "wake_word-end": + if pipe_running == false: + return + + if event["data"]["wake_word_output"].has("wake_word_phrase") == false: + return + + wake_word = event["data"]["wake_word_output"]["wake_word_phrase"] + "stt-end": + if pipe_running == false: + return + + if event["data"]["stt_output"].has("text") == false: + return + + stt_message = event["data"]["stt_output"]["text"] + "intent-end": + if pipe_running == false: + return + + tts_message = event["data"]["intent_output"]["response"]["speech"]["plain"]["speech"] + "tts-end": + if pipe_running == false: + return + + if event["data"]["tts_output"].has("url") == false: + return + + var headers = PackedStringArray(["Authorization: Bearer %s" % api.token, "Content-Type: application/json"]) + var url = "%s://%s%s" % ["https" if api.url.begins_with("wss") else "http", api.url.split("//")[1],event["data"]["tts_output"]["url"]] + + Request.request(url, headers, HTTPClient.METHOD_GET) + + var response = await Request.request_completed + + if response[0] != HTTPRequest.RESULT_SUCCESS: + return + + var sound = AudioStreamMP3.new() + sound.data = response[3] + + tts_sound = sound + "run-end": pipe_running = false + wake_word = null handler_id = 0 - "wake_word-start": - # handle trigger message - pass - "wake_word-end": - # handle trigger message - pass _: pass diff --git a/lib/utils/font_tools.gd b/lib/utils/font_tools.gd new file mode 100644 index 0000000..a8677c6 --- /dev/null +++ b/lib/utils/font_tools.gd @@ -0,0 +1,9 @@ +static func get_font_size(label: Label3D, chars=null): + var font = label.font + + if font == null: + return Vector2(0, 0) + + var size = font.get_string_size(label.text if chars == null else chars, label.horizontal_alignment, label.width, label.font_size) * label.pixel_size + + return size \ No newline at end of file From 47c7104d15367b441de4eb03130028425521dfa3 Mon Sep 17 00:00:00 2001 From: Nitwel Date: Fri, 15 Mar 2024 19:27:45 +0100 Subject: [PATCH 3/4] make voice assistant toggleable and fix bugs --- content/main.gd | 15 ++++++++++ content/main.tscn | 6 +--- content/system/assist/assist.gd | 10 +++++-- content/system/assist/assist.tscn | 2 +- content/ui/menu/settings/settings_menu.gd | 33 +++++++++++++++++++++ content/ui/menu/settings/settings_menu.tscn | 15 ++++++++++ lib/home_apis/hass_ws/handlers/assist.gd | 5 +++- lib/stores/settings.gd | 7 +++-- lib/stores/store.gd | 14 +++++---- 9 files changed, 89 insertions(+), 18 deletions(-) diff --git a/content/main.gd b/content/main.gd index 9feab7e..dbf478b 100644 --- a/content/main.gd +++ b/content/main.gd @@ -2,6 +2,7 @@ extends Node3D var sky = preload ("res://assets/materials/sky.material") var sky_passthrough = preload ("res://assets/materials/sky_passthrough.material") +const VoiceAssistant = preload ("res://content/system/assist/assist.tscn") @onready var environment: WorldEnvironment = $WorldEnvironment @onready var camera: XRCamera3D = $XROrigin3D/XRCamera3D @@ -10,6 +11,7 @@ var sky_passthrough = preload ("res://assets/materials/sky_passthrough.material" @onready var house = $House @onready var menu = $Menu @onready var keyboard = $Keyboard +var voice_assistant = null func _ready(): # In case we're running on the headset, use the passthrough sky @@ -20,6 +22,8 @@ func _ready(): else: RenderingServer.set_debug_generate_wireframes(true) + update_voice_assistant() + controller_left.button_pressed.connect(func(name): _emit_action(name, true, false) ) @@ -61,6 +65,17 @@ func _ready(): remove_child(keyboard) ) +func update_voice_assistant(): + if Store.settings.is_loaded() == false: + await Store.settings.on_loaded + + if Store.settings.voice_assistant&&voice_assistant == null: + voice_assistant = VoiceAssistant.instantiate() + add_child(voice_assistant) + elif !Store.settings.voice_assistant&&voice_assistant != null: + remove_child(voice_assistant) + voice_assistant.queue_free() + func toggle_menu(): if menu.show_menu == false: add_child(menu) diff --git a/content/main.tscn b/content/main.tscn index 19643a5..421b116 100644 --- a/content/main.tscn +++ b/content/main.tscn @@ -1,4 +1,4 @@ -[gd_scene load_steps=17 format=3 uid="uid://eecv28y6jxk4"] +[gd_scene load_steps=16 format=3 uid="uid://eecv28y6jxk4"] [ext_resource type="PackedScene" uid="uid://clc5dre31iskm" path="res://addons/godot-xr-tools/xr/start_xr.tscn" id="1_i4c04"] [ext_resource type="Script" path="res://content/main.gd" id="1_uvrd4"] @@ -11,7 +11,6 @@ [ext_resource type="PackedScene" uid="uid://c3kdssrmv84kv" path="res://content/ui/menu/menu.tscn" id="8_du83w"] [ext_resource type="PackedScene" uid="uid://lrehk38exd5n" path="res://content/system/keyboard/keyboard.tscn" id="9_e5n3p"] [ext_resource type="PackedScene" uid="uid://cbemihbxkd4ll" path="res://content/system/house/house.tscn" id="9_np6mw"] -[ext_resource type="PackedScene" uid="uid://oydbwnek6xb4" path="res://content/system/assist/assist.tscn" id="12_8av8q"] [sub_resource type="Sky" id="Sky_vhymk"] sky_material = ExtResource("5_wgwf8") @@ -84,7 +83,4 @@ transform = Transform3D(0.499999, -0.000139169, -6.50204e-05, 5.24307e-05, 0.353 [node name="House" parent="." instance=ExtResource("9_np6mw")] -[node name="Assist" parent="." instance=ExtResource("12_8av8q")] -transform = Transform3D(1, -1.39636e-11, 0, 9.47986e-12, 1, 0, 0, 0, 1, 0.000231838, -4.01369e-06, -0.855612) - [editable path="XROrigin3D/XRControllerLeft"] diff --git a/content/system/assist/assist.gd b/content/system/assist/assist.gd index 81de3dc..ce3143a 100644 --- a/content/system/assist/assist.gd +++ b/content/system/assist/assist.gd @@ -8,7 +8,7 @@ const target_freq = 16000 const sample_rate_ratio: float = audio_freq / target_freq * 1.5 var effect: AudioEffectCapture -@export var input_threshold: float = 0.1 +@export var input_threshold: float = 0.05 @onready var audio_recorder: AudioStreamPlayer = $AudioStreamRecord @onready var audio_timer: Timer = $AudioTimer @onready var visual_timer: Timer = $VisualTimer @@ -18,7 +18,7 @@ var effect: AudioEffectCapture @onready var loader: Node3D = $Loader @onready var camera = $"/root/Main/XROrigin3D/XRCamera3D" -var running := true +var running := false func _ready(): var index = AudioServer.get_bus_index("Record") @@ -51,13 +51,17 @@ func _ready(): ) HomeApi.api.assist_handler.on_tts_sound.connect(func(audio): - print("Playing TTS ", audio.data.size()) audio_player_3d.stream=audio audio_player_3d.play() visual_timer.start() running=false ) + HomeApi.api.assist_handler.on_error.connect(func(): + running=false + finish() + ) + visual_timer.timeout.connect(func(): if audio_player_3d.playing == false: finish() diff --git a/content/system/assist/assist.tscn b/content/system/assist/assist.tscn index 1356257..76c7c44 100644 --- a/content/system/assist/assist.tscn +++ b/content/system/assist/assist.tscn @@ -21,7 +21,7 @@ one_shot = true [node name="AudioStreamPlayer3D" type="AudioStreamPlayer3D" parent="."] [node name="VisualTimer" type="Timer" parent="."] -wait_time = 4.0 +wait_time = 5.0 one_shot = true [node name="ChatUser" parent="." instance=ExtResource("2_laew1")] diff --git a/content/ui/menu/settings/settings_menu.gd b/content/ui/menu/settings/settings_menu.gd index c46d8c5..51e3afc 100644 --- a/content/ui/menu/settings/settings_menu.gd +++ b/content/ui/menu/settings/settings_menu.gd @@ -3,6 +3,7 @@ extends Node3D const credits_scene = preload ("./credits.tscn") @onready var connection_status = $Content/ConnectionStatus +@onready var main = $"/root/Main" @onready var input_url = $Content/InputURL @onready var input_token = $Content/InputToken @@ -11,6 +12,7 @@ const credits_scene = preload ("./credits.tscn") @onready var save = $Content/Save @onready var clear_save = $Content/ClearSave @onready var background = $Background +@onready var voice_assist = $Content/VoiceAssist func _ready(): background.visible = false @@ -53,6 +55,31 @@ func _ready(): House.body.update_house() ) + voice_assist.on_button_down.connect(func(): + if Store.settings.is_loaded() == false: + await Store.settings.on_loaded + + OS.request_permissions() + + voice_assist.label="mic" + + Store.settings.voice_assistant=true + main.update_voice_assistant() + Store.settings.save_local() + ) + + voice_assist.on_button_up.connect(func(): + if Store.settings.is_loaded() == false: + await Store.settings.on_loaded + + voice_assist.label="mic_off" + + Store.settings.voice_assistant=false + main.update_voice_assistant() + Store.settings.save_local() + + ) + HomeApi.on_connect.connect(func(): connection_status.text="Connected" ) @@ -60,3 +87,9 @@ func _ready(): HomeApi.on_disconnect.connect(func(): connection_status.text="Disconnected" ) + + if Store.settings.is_loaded() == false: + await Store.settings.on_loaded + + voice_assist.label = "mic_off" if Store.settings.voice_assistant == false else "mic" + voice_assist.active = Store.settings.voice_assistant diff --git a/content/ui/menu/settings/settings_menu.tscn b/content/ui/menu/settings/settings_menu.tscn index c41a242..7e45261 100644 --- a/content/ui/menu/settings/settings_menu.tscn +++ b/content/ui/menu/settings/settings_menu.tscn @@ -131,3 +131,18 @@ outline_size = 0 horizontal_alignment = 0 autowrap_mode = 3 width = 150.0 + +[node name="VoiceAssist" parent="Content" instance=ExtResource("1_faxng")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.1, 0, 0.12) +label = "mic_off" +icon = true +toggleable = true + +[node name="LabelVoiceAssist" type="Label3D" parent="Content"] +transform = Transform3D(1, 0, 0, 0, -4.37114e-08, 1, 0, -1, -4.37114e-08, 0.01, 0, 0.12) +pixel_size = 0.001 +text = "Voice- +Assist:" +font_size = 18 +outline_size = 0 +horizontal_alignment = 0 diff --git a/lib/home_apis/hass_ws/handlers/assist.gd b/lib/home_apis/hass_ws/handlers/assist.gd index a7fac54..f90ef35 100644 --- a/lib/home_apis/hass_ws/handlers/assist.gd +++ b/lib/home_apis/hass_ws/handlers/assist.gd @@ -4,6 +4,7 @@ signal on_wake_word(wake_word: String) signal on_stt_message(message: String) signal on_tts_message(message: String) signal on_tts_sound(sound: AudioStreamMP3) +signal on_error() var api: HASS_API var pipe_running := false @@ -127,7 +128,9 @@ func handle_message(message: Dictionary): sound.data = response[3] tts_sound = sound - + "error": + if event["data"]["code"] == "stt-no-text-recognized": + on_error.emit() "run-end": pipe_running = false wake_word = null diff --git a/lib/stores/settings.gd b/lib/stores/settings.gd index e2fc1ee..d277210 100644 --- a/lib/stores/settings.gd +++ b/lib/stores/settings.gd @@ -1,11 +1,11 @@ extends StoreClass -const StoreClass = preload("./store.gd") - +const StoreClass = preload ("./store.gd") var type: String = "HASS_WS" var url: String = "" var token: String = "" +var voice_assistant: bool = false func _init(): _save_path = "user://settings.json" @@ -13,4 +13,5 @@ func _init(): func clear(): type = "HASS_WS" url = "" - token = "" \ No newline at end of file + token = "" + voice_assistant = false \ No newline at end of file diff --git a/lib/stores/store.gd b/lib/stores/store.gd index 2a68ba8..f2ac103 100644 --- a/lib/stores/store.gd +++ b/lib/stores/store.gd @@ -1,6 +1,6 @@ extends RefCounted -const VariantSerializer = preload("res://lib/utils/variant_serializer.gd") +const VariantSerializer = preload ("res://lib/utils/variant_serializer.gd") signal on_loaded signal on_saved @@ -18,7 +18,7 @@ func create_dict(): var data: Dictionary = {} for prop_info in get_property_list(): - if prop_info.name.begins_with("_") || prop_info.hint_string != "": + if prop_info.name.begins_with("_")||prop_info.hint_string != "": continue var prop = get(prop_info.name) @@ -32,10 +32,14 @@ func create_dict(): func use_dict(dict: Dictionary): for prop_info in get_property_list(): - if prop_info.name.begins_with("_") || prop_info.hint_string != "": + if prop_info.name.begins_with("_")||prop_info.hint_string != "": continue var prop = get(prop_info.name) + + if dict.has(prop_info.name) == false: + continue + var prop_value = dict[prop_info.name] if prop is Store: @@ -43,7 +47,7 @@ func use_dict(dict: Dictionary): else: set(prop_info.name, prop_value) -func save_local(path = _save_path): +func save_local(path=_save_path): if path == null: return false @@ -61,7 +65,7 @@ func save_local(path = _save_path): return true -func load_local(path = _save_path): +func load_local(path=_save_path): if path == null: return false From e9cfbed1912fe059e090ba89dd90407d02a5201d Mon Sep 17 00:00:00 2001 From: Nitwel Date: Fri, 15 Mar 2024 19:36:48 +0100 Subject: [PATCH 4/4] remove print --- lib/home_apis/hass_ws/handlers/assist.gd | 7 ------- test/lib/utils/sample_hold/sample_hold.gd | 1 - 2 files changed, 8 deletions(-) diff --git a/lib/home_apis/hass_ws/handlers/assist.gd b/lib/home_apis/hass_ws/handlers/assist.gd index f90ef35..dde4eba 100644 --- a/lib/home_apis/hass_ws/handlers/assist.gd +++ b/lib/home_apis/hass_ws/handlers/assist.gd @@ -43,8 +43,6 @@ func start_wakeword(): if pipe_running: return - print("wake start") - api.send_packet({ "type": "assist_pipeline/run", "start_stage": "wake_word", @@ -66,8 +64,6 @@ func send_data(data: PackedByteArray): stream.encode_s8(0, handler_id) stream.append_array(data) - print("sending data") - api.send_raw(stream) func handle_message(message: Dictionary): @@ -79,11 +75,8 @@ func handle_message(message: Dictionary): if event.has("type") == false: return - print(message) - match event["type"]: "run-start": - print("Pipeline started") pipe_running = true handler_id = event["data"]["runner_data"]["stt_binary_handler_id"] "wake_word-end": diff --git a/test/lib/utils/sample_hold/sample_hold.gd b/test/lib/utils/sample_hold/sample_hold.gd index f8be129..2e38cd9 100644 --- a/test/lib/utils/sample_hold/sample_hold.gd +++ b/test/lib/utils/sample_hold/sample_hold.gd @@ -7,7 +7,6 @@ var data = PackedVector2Array() var result: PackedFloat32Array func _ready(): - print("test") for i in range(0, 44100): var value = sin(i * 2 * PI / 44100.0) data.push_back(Vector2(value, value))