Speaker management
What is a speaker?
A speaker is the native speaker who records pronunciations for a language. Each language has one or more speakers assigned. The speaker accesses their recording interface via a unique access code, at: [application URL]/speaker/login.
Automatic creation during language setup
When you create a new language and fill in the "Speaker configuration" section, a speakers record is automatically created in the database with:
- The speaker's name
- The generated or entered access code
- The link to the language (language_id)
- Active status (is_active = true)
Finding speaker access codes
Via the admin interface
In the language list (/admin/languages) → "Speaker code" column → 📋 button to copy.
Via PostgreSQL
SELECT l.name AS language, s.name AS speaker, s.access_code, s.is_active
FROM speakers s
JOIN languages l ON s.language_id = l.id
ORDER BY l.name;
Changing the speaker access code
Via the admin interface (recommended)
In the language list → "Speaker code" column:
1. Click on the code field to edit it
2. Enter the new code (format: RACINES-XXXXX-2025)
3. Click "Sauvegarder" or press Enter
The new code is immediately active. Communicate it to the speaker — the old code will no longer work.
Via PostgreSQL
UPDATE speakers
SET access_code = 'RACINES-NEWCO-2026'
WHERE language_id = 'language-uuid'
AND is_active = true;
⚠️ Verify uniqueness before applying:
sql SELECT COUNT(*) FROM speakers WHERE access_code = 'RACINES-NEWCO-2026'; -- Must return 0
Disabling a speaker
If a speaker should no longer have access to the recording interface (end of assignment, change of speaker…):
Via PostgreSQL
UPDATE speakers
SET is_active = false
WHERE id = 'speaker-uuid';
A disabled speaker (is_active = false) can no longer log in — their access code is rejected.
Re-enabling a speaker
UPDATE speakers
SET is_active = true
WHERE id = 'speaker-uuid';
Creating a speaker manually
If you did not create the speaker during language creation, or if you want to add a second speaker:
Via PostgreSQL
INSERT INTO speakers (language_id, name, access_code, is_active)
VALUES (
'language-uuid',
'Speaker name',
'RACINES-XXXXX-2025',
true
)
RETURNING id, access_code;
⚠️ The code must be unique in the
speakerstable. Check before inserting.
Changing the speaker for a language
If you want to assign a new speaker (replacement):
-
Disable the old speaker:
sql UPDATE speakers SET is_active = false WHERE id = 'old-speaker-uuid'; -
Create the new speaker (via SQL as above, or via the language creation form in "add content" mode)
-
Communicate the new code to the new speaker
ℹ️ Audio recordings from the old speaker remain in MinIO — changing speakers does not delete existing audio files.
Speaker data in the speakers table
SELECT
id,
language_id,
name, -- Speaker name
access_code, -- Access code (format RACINES-XXXXX-2025)
is_active, -- true = can log in
created_at
FROM speakers
WHERE language_id = 'language-uuid';
What the speaker sees
Once logged in with their code, the speaker accesses their recording interface: - They only see their assigned language (not others) - They can record and upload audio for their words and phrases - They track their progress via counters (X/Y recordings)
→ See the full speaker guide