Skip to content
acteme

Godot

The Acteme add-on puts the studio inside the Godot 4.2+ editor: write and translate the script, cast voices per language, render, review takes and sync. In game, an ActemeVoicePlayer node plays lines by key in every dub language.

Install the add-on

Copy the addons/acteme folder into your project's res://addons/, then enable Acteme under Project → Project Settings → Plugins. An Acteme screen appears next to 2D, 3D and Script, and the ActemeVoice autoload is registered.

Connect

Open the Acteme screen and paste your API URL (https://acteme.app/api) and an API key. Give the key read, write and generate to use everything, or just read to sync. The key is saved in the editor's settings folder on your machine, never inside the project.

Pick a project from the list, or create one. The link, output folder and sync options are saved under acteme/ in project.godot, so commit it and teammates get the same setup with their own keys.

Sync

Press Sync. Files whose checksum changed are downloaded under the output folder (default res://audio/vo) at the path from your project's file template. Files for lines you deleted are moved to the system trash, and only files an earlier sync wrote are touched. Check for changes shows what a sync would do first, and syncing can run on its own when a render finishes. Project → Tools → Acteme: Sync voice lines works without opening the screen.

The Acteme screen

TabWhat it does
ScriptLines with status in the language picked in the header. Filter, edit text, style and notes, insert vocal tags, see lint warnings. In another language you edit the translation next to the source. Play takes with waveforms, pick the one that ships, approve. Bulk character, scene, style, approve, render, translate and delete. Drag to reorder. Import CSV, JSON or Yarn Spinner with a preview.
CastVoice, default style and model per character, a different voice per language for dubs, and auditions.
JobsLive render progress, failures with a jump to the line, cancel.
SyncOutput folder, languages, voice bank, and a snippet for playing lines in game.
Quick lineOne-off lines and two-speaker exchanges, saved straight into the project.
ProjectModel and audio output, file template, languages, machine translation, scenes and the pronunciation lexicon.

In the script list, Space plays the selected take, Ctrl+N adds a line, Ctrl+R renders the selection and Ctrl+S saves the line you're editing.

Playing lines in game

Sync builds an ActemeVoiceBank (default res://audio/vo/voice_bank.tres) with every line's audio, character and duration in every language. The ActemeVoice autoload loads it.

npc.gd
@onready var voice: ActemeVoicePlayer = $ActemeVoicePlayer
 
func greet() -> void:
	voice.play("gate_ambush.varga_01")
 
func _ready() -> void:
	voice.line_finished.connect(func(key): print(key, " done"))

Add the node with Add Child Node → ActemeVoicePlayer, or select a node and press Add voice player to selected node in the Sync tab, which also adds a positional AudioStreamPlayer2D or AudioStreamPlayer3D for 2D and 3D nodes. The player:

  • plays by key, queues lines (enqueue, play_sequence) and emits line_started, line_finished, line_missing and queue_finished;
  • picks a line's key in the inspector from a searchable list with preview.

For narration or UI lines without a node, call ActemeVoice.play("tutorial.welcome"). ActemeVoice.line_started and line_finished fire for every player.

Dub languages

ActemeVoice.locale = "de-DE" switches the voice-over language. Leave it empty and it follows TranslationServer.get_locale(), so the dub changes with your game's language setting. A language without a take for a line falls back to another variant of the language (de matches de-DE), then to the project's default language.

Tips

  • Render OGG or WAV for Godot. Both import natively and preview in the editor; OGG keeps the project small.
  • ActemeVoice.bank.prefetch(keys) loads a scene's lines in the background to avoid hitches on first play.
  • The bank refers to audio by path. If you export only selected resources, include the output folder.