From 78dffe0d0409f457c6a99d04da78315d059ba4c2 Mon Sep 17 00:00:00 2001 From: bruvzg <7645683+bruvzg@users.noreply.github.com> Date: Fri, 24 Feb 2023 19:11:55 +0200 Subject: [PATCH] Add a text-to-speech demo (#744) Co-authored-by: Hugo Locurcio --- audio/text_to_speech/README.md | 16 ++ audio/text_to_speech/control.tscn | 244 ++++++++++++++++++ audio/text_to_speech/icon.png | Bin 0 -> 7390 bytes audio/text_to_speech/icon.png.import | 34 +++ audio/text_to_speech/project.godot | 28 ++ audio/text_to_speech/screenshots/.gdignore | 0 .../screenshots/text_to_speech.webp | Bin 0 -> 69898 bytes audio/text_to_speech/voice_list.gd | 127 +++++++++ 8 files changed, 449 insertions(+) create mode 100644 audio/text_to_speech/README.md create mode 100644 audio/text_to_speech/control.tscn create mode 100644 audio/text_to_speech/icon.png create mode 100644 audio/text_to_speech/icon.png.import create mode 100644 audio/text_to_speech/project.godot create mode 100644 audio/text_to_speech/screenshots/.gdignore create mode 100644 audio/text_to_speech/screenshots/text_to_speech.webp create mode 100644 audio/text_to_speech/voice_list.gd diff --git a/audio/text_to_speech/README.md b/audio/text_to_speech/README.md new file mode 100644 index 00000000..a614aa81 --- /dev/null +++ b/audio/text_to_speech/README.md @@ -0,0 +1,16 @@ +# Text-to-Speech Demo + +This is a demo showing text-to-speech support. + +Language: GDScript + +Renderer: Compatibility + +## How does it work? + +It uses `tts_*()` methods of the [`DisplayServer`](https://docs.godotengine.org/en/latest/classes/class_displayserver.html) singleton +to enumerate voice information, send utterances to the OS TTS API, and receive callback signals. + +## Screenshots + +![Screenshot](screenshots/text_to_speech.webp) diff --git a/audio/text_to_speech/control.tscn b/audio/text_to_speech/control.tscn new file mode 100644 index 00000000..08b1df71 --- /dev/null +++ b/audio/text_to_speech/control.tscn @@ -0,0 +1,244 @@ +[gd_scene load_steps=2 format=3 uid="uid://u5emvyeyodyh"] + +[ext_resource type="Script" path="res://voice_list.gd" id="1_0bwjs"] + +[node name="Control" type="Control"] +layout_mode = 3 +anchors_preset = 8 +anchor_left = 0.5 +anchor_top = 0.5 +anchor_right = 0.5 +anchor_bottom = 0.5 +offset_left = -576.0 +offset_top = -312.0 +offset_right = -576.0 +offset_bottom = -312.0 +grow_horizontal = 2 +grow_vertical = 2 +size_flags_horizontal = 4 +size_flags_vertical = 4 +script = ExtResource("1_0bwjs") + +[node name="LineEditFilterLang" type="LineEdit" parent="."] +layout_mode = 0 +offset_left = 416.0 +offset_top = 304.0 +offset_right = 704.0 +offset_bottom = 337.0 +theme_override_font_sizes/font_size = 16 +placeholder_text = "Language" + +[node name="LineEditFilterName" type="LineEdit" parent="."] +layout_mode = 0 +offset_left = 96.0 +offset_top = 304.0 +offset_right = 408.0 +offset_bottom = 337.0 +theme_override_font_sizes/font_size = 16 +placeholder_text = "Name" + +[node name="Label" type="Label" parent="LineEditFilterName"] +layout_mode = 0 +offset_left = -76.0 +offset_top = 3.0 +offset_right = -20.0 +offset_bottom = 35.0 +text = "Filter:" + +[node name="Tree" type="Tree" parent="."] +layout_mode = 0 +offset_left = 16.0 +offset_top = 56.0 +offset_right = 704.0 +offset_bottom = 296.0 +columns = 2 + +[node name="Utterance" type="TextEdit" parent="."] +layout_mode = 0 +offset_left = 264.0 +offset_top = 472.0 +offset_right = 704.0 +offset_bottom = 584.0 +theme_override_font_sizes/font_size = 16 +text = "Beware the Jabberwock, my son! The jaws that bite, the claws that catch!" +wrap_mode = 1 +draw_spaces = true + +[node name="ButtonSpeak" type="Button" parent="."] +layout_mode = 0 +offset_left = 16.0 +offset_top = 472.0 +offset_right = 128.0 +offset_bottom = 504.0 +text = "Speak" + +[node name="ButtonIntSpeak" type="Button" parent="."] +layout_mode = 0 +offset_left = 144.0 +offset_top = 472.0 +offset_right = 256.0 +offset_bottom = 504.0 +text = "Interrupt" + +[node name="ButtonStop" type="Button" parent="."] +layout_mode = 0 +offset_left = 16.0 +offset_top = 512.0 +offset_right = 128.0 +offset_bottom = 544.0 +text = "Stop" + +[node name="ButtonPause" type="Button" parent="."] +layout_mode = 0 +offset_left = 144.0 +offset_top = 512.0 +offset_right = 256.0 +offset_bottom = 544.0 +toggle_mode = true +text = "Pause" + +[node name="HSliderRate" type="HSlider" parent="."] +layout_mode = 0 +offset_left = 96.0 +offset_top = 352.0 +offset_right = 440.0 +offset_bottom = 368.0 +min_value = 0.1 +max_value = 10.0 +step = 0.05 +value = 1.0 +exp_edit = true + +[node name="Label" type="Label" parent="HSliderRate"] +layout_mode = 0 +offset_left = -76.0 +offset_top = -5.0 +offset_right = -20.0 +offset_bottom = 27.0 +text = "Rate:" + +[node name="Value" type="Label" parent="HSliderRate"] +layout_mode = 0 +offset_left = 352.0 +offset_top = -8.0 +offset_right = 416.0 +offset_bottom = 24.0 +text = "1.00x" + +[node name="HSliderPitch" type="HSlider" parent="."] +layout_mode = 0 +offset_left = 96.0 +offset_top = 392.0 +offset_right = 440.0 +offset_bottom = 408.0 +max_value = 2.0 +step = 0.05 +value = 1.0 + +[node name="Label" type="Label" parent="HSliderPitch"] +layout_mode = 0 +offset_left = -76.0 +offset_top = -5.0 +offset_right = -28.0 +offset_bottom = 27.0 +text = "Pitch:" + +[node name="Value" type="Label" parent="HSliderPitch"] +layout_mode = 0 +offset_left = 352.0 +offset_top = -8.0 +offset_right = 416.0 +offset_bottom = 24.0 +text = "1.00x" + +[node name="HSliderVolume" type="HSlider" parent="."] +layout_mode = 0 +offset_left = 96.0 +offset_top = 432.0 +offset_right = 440.0 +offset_bottom = 448.0 +min_value = 1.0 +value = 50.0 + +[node name="Label" type="Label" parent="HSliderVolume"] +layout_mode = 0 +offset_left = -76.0 +offset_top = -5.0 +offset_right = -12.0 +offset_bottom = 27.0 +text = "Volume:" + +[node name="Value" type="Label" parent="HSliderVolume"] +layout_mode = 0 +offset_left = 352.0 +offset_top = -8.0 +offset_right = 416.0 +offset_bottom = 24.0 +text = "50%" + +[node name="ColorRect" type="ColorRect" parent="."] +layout_mode = 0 +offset_left = 16.0 +offset_top = 16.0 +offset_right = 144.0 +offset_bottom = 40.0 + +[node name="Label" type="Label" parent="ColorRect"] +layout_mode = 0 +offset_right = 128.0 +offset_bottom = 32.0 +theme_override_font_sizes/font_size = 16 +text = "Speaking..." + +[node name="Log" type="TextEdit" parent="."] +layout_mode = 0 +offset_left = 712.0 +offset_top = 56.0 +offset_right = 1138.0 +offset_bottom = 584.0 +editable = false +context_menu_enabled = false +shortcut_keys_enabled = false +virtual_keyboard_enabled = false +middle_mouse_paste_enabled = false + +[node name="ButtonClearLog" type="Button" parent="Log"] +layout_mode = 0 +offset_left = 346.0 +offset_top = 8.0 +offset_right = 418.0 +offset_bottom = 39.0 +theme_override_font_sizes/font_size = 16 +text = "Clear" + +[node name="RichTextLabel" type="RichTextLabel" parent="."] +layout_mode = 0 +offset_left = 152.0 +offset_top = 16.0 +offset_right = 1008.0 +offset_bottom = 40.0 +theme_override_font_sizes/normal_font_size = 16 +bbcode_enabled = true +scroll_active = false + +[node name="ButtonDemo" type="Button" parent="."] +layout_mode = 0 +offset_left = 16.0 +offset_top = 552.0 +offset_right = 256.0 +offset_bottom = 581.0 +theme_override_font_sizes/font_size = 16 +text = "Demo" + +[connection signal="text_changed" from="LineEditFilterLang" to="." method="_on_LineEditFilterName_text_changed"] +[connection signal="text_changed" from="LineEditFilterName" to="." method="_on_LineEditFilterName_text_changed"] +[connection signal="item_activated" from="Tree" to="." method="_on_ItemList_item_activated"] +[connection signal="pressed" from="ButtonSpeak" to="." method="_on_ButtonSpeak_pressed"] +[connection signal="pressed" from="ButtonIntSpeak" to="." method="_on_ButtonIntSpeak_pressed"] +[connection signal="pressed" from="ButtonStop" to="." method="_on_ButtonStop_pressed"] +[connection signal="pressed" from="ButtonPause" to="." method="_on_ButtonPause_pressed"] +[connection signal="value_changed" from="HSliderRate" to="." method="_on_HSliderRate_value_changed"] +[connection signal="value_changed" from="HSliderPitch" to="." method="_on_HSliderPitch_value_changed"] +[connection signal="value_changed" from="HSliderVolume" to="." method="_on_HSliderVolume_value_changed"] +[connection signal="pressed" from="Log/ButtonClearLog" to="." method="_on_ButtonClearLog_pressed"] +[connection signal="pressed" from="ButtonDemo" to="." method="_on_Button_pressed"] diff --git a/audio/text_to_speech/icon.png b/audio/text_to_speech/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..307ced8e9adf7a09f8d282d7e56cb977df568064 GIT binary patch literal 7390 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 literal 0 HcmV?d00001 diff --git a/audio/text_to_speech/voice_list.gd b/audio/text_to_speech/voice_list.gd new file mode 100644 index 00000000..320fa8f3 --- /dev/null +++ b/audio/text_to_speech/voice_list.gd @@ -0,0 +1,127 @@ +extends Control + +var id = 0 #utterance id +var ut_map = {} +var vs + +func _ready(): + # get voice data + vs = DisplayServer.tts_get_voices() + var root = $Tree.create_item() + $Tree.set_hide_root(true) + $Tree.set_column_title(0, "Name") + $Tree.set_column_title(1, "Language") + $Tree.set_column_titles_visible(true) + for v in vs: + var child = $Tree.create_item(root) + child.set_text(0, v["name"]) + child.set_metadata(0, v["id"]) + child.set_text(1, v["language"]) + $Log.text += "%d voices available\n" % [vs.size()] + $Log.text += "=======\n" + + # add callbacks + DisplayServer.tts_set_utterance_callback(DisplayServer.TTS_UTTERANCE_STARTED, Callable(self, "_on_utterance_start")) + DisplayServer.tts_set_utterance_callback(DisplayServer.TTS_UTTERANCE_ENDED, Callable(self, "_on_utterance_end")) + DisplayServer.tts_set_utterance_callback(DisplayServer.TTS_UTTERANCE_CANCELED, Callable(self, "_on_utterance_error")) + DisplayServer.tts_set_utterance_callback(DisplayServer.TTS_UTTERANCE_BOUNDARY, Callable(self, "_on_utterance_boundary")) + set_process(true) + +func _process(delta): + $ButtonPause.button_pressed = DisplayServer.tts_is_paused() + if DisplayServer.tts_is_speaking(): + $ColorRect.color = Color(1, 0, 0) + else: + $ColorRect.color = Color(1, 1, 1) + +func _on_utterance_boundary(pos, id): + $RichTextLabel.text = "[bgcolor=yellow][color=black]" + ut_map[id].substr(0, pos) + "[/color][/bgcolor]" + ut_map[id].substr(pos, -1) + +func _on_utterance_start(id): + $Log.text += "utterance %d started\n" % [id] + +func _on_utterance_end(id): + $RichTextLabel.text = "[bgcolor=yellow][color=black]" + ut_map[id] + "[/color][/bgcolor]" + $Log.text += "utterance %d ended\n" % [id] + ut_map.erase(id) + +func _on_utterance_error(id): + $RichTextLabel.text = "" + $Log.text += "utterance %d canceled/failed\n" % [id] + ut_map.erase(id) + +func _on_ButtonStop_pressed(): + DisplayServer.tts_stop() + +func _on_ButtonPause_pressed(): + if $ButtonPause.pressed: + DisplayServer.tts_pause() + else: + DisplayServer.tts_resume() + +func _on_ButtonSpeak_pressed(): + if $Tree.get_selected(): + $Log.text += "utterance %d queried\n" % [id] + ut_map[id] = $Utterance.text + DisplayServer.tts_speak($Utterance.text, $Tree.get_selected().get_metadata(0), $HSliderVolume.value, $HSliderPitch.value, $HSliderRate.value, id, false) + id += 1 + else: + OS.alert("No voice selected.\nSelect a voice in the list, then try using Speak again.") + +func _on_ButtonIntSpeak_pressed(): + if $Tree.get_selected(): + $Log.text += "utterance %d interrupt\n" % [id] + ut_map[id] = $Utterance.text + DisplayServer.tts_speak($Utterance.text, $Tree.get_selected().get_metadata(0), $HSliderVolume.value, $HSliderPitch.value, $HSliderRate.value, id, true) + id += 1 + else: + OS.alert("No voice selected.\nSelect a voice in the list, then try using Interrupt again.") + +func _on_ButtonClearLog_pressed(): + $Log.text = "" + +func _on_HSliderRate_value_changed(value): + $HSliderRate/Value.text = "%.2fx" % [value] + +func _on_HSliderPitch_value_changed(value): + $HSliderPitch/Value.text = "%.2fx" % [value] + +func _on_HSliderVolume_value_changed(value): + $HSliderVolume/Value.text = "%d%%" % [value] + +func _on_Button_pressed(): + var vc + #demo - en + vc = DisplayServer.tts_get_voices_for_language("en") + if !vc.is_empty(): + ut_map[id] = "Beware the Jabberwock, my son!" + ut_map[id + 1] = "The jaws that bite, the claws that catch!" + DisplayServer.tts_speak("Beware the Jabberwock, my son!", vc[0], 50, 1, 1, id) + DisplayServer.tts_speak("The jaws that bite, the claws that catch!", vc[0], 50, 1, 1, id + 1) + id += 2 + #demo - es + vc = DisplayServer.tts_get_voices_for_language("es") + if !vc.is_empty(): + ut_map[id] = "¡Cuidado, hijo, con el Fablistanón!" + ut_map[id + 1] = "¡Con sus dientes y garras, muerde, apresa!" + DisplayServer.tts_speak("¡Cuidado, hijo, con el Fablistanón!", vc[0], 50, 1, 1, id) + DisplayServer.tts_speak("¡Con sus dientes y garras, muerde, apresa!", vc[0], 50, 1, 1, id + 1) + id += 2 + #demo - ru + vc = DisplayServer.tts_get_voices_for_language("ru") + if !vc.is_empty(): + ut_map[id] = "О, бойся Бармаглота, сын!" + ut_map[id + 1] = "Он так свирлеп и дик!" + DisplayServer.tts_speak("О, бойся Бармаглота, сын!", vc[0], 50, 1, 1, id) + DisplayServer.tts_speak("Он так свирлеп и дик!", vc[0], 50, 1, 1, id + 1) + id += 2 + +func _on_LineEditFilterName_text_changed(new_text): + $Tree.clear() + var root = $Tree.create_item() + for v in vs: + if ($LineEditFilterName.text.is_empty() || $LineEditFilterName.text.to_lower() in v["name"].to_lower()) && ($LineEditFilterLang.text.is_empty() || $LineEditFilterLang.text.to_lower() in v["language"].to_lower()): + var child = $Tree.create_item(root) + child.set_text(0, v["name"]) + child.set_metadata(0, v["id"]) + child.set_text(1, v["language"])