Is your feature request related to a problem? Please describe.
The live transcription language is stored per conversation only. LiveTranscriptionService::enable() reads $room->getLiveTranscriptionLanguageId() and omits langId entirely when it is empty, so the live_transcription app falls back to its hardcoded default (TranscribeRequest.langId: str = "en").
On an instance where the spoken language is not English this means:
- every conversation starts in English until somebody opens the conversation settings and changes it,
- users who do not know about that setting see English transcription of non-English speech, which produces nonsense,
- the obvious-looking workaround — picking their own language in the personal "translation target language" setting — makes it worse, because the speech is still transcribed with the wrong acoustic model and is then machine-translated on top, adding a task-processing round trip per segment.
We run a Nextcloud for a public-sector organisation in Türkiye with several thousand users. Turkish is the language of essentially every call. There is no way to express that once for the whole instance.
Describe the solution you'd like
A server-level default that is used when a conversation has no explicit language set, for example:
occ config:app:set spreed transcription_language_default --value tr
LiveTranscriptionService::enable() would fall back to that value before falling back to the app's own default, and the conversation setting would continue to override it. The conversation settings dropdown could show it as "Default language (Türkçe)" instead of the current hardcoded "Default language (English)".
An admin UI field in the Talk settings would be nice but the occ/app-config key alone would already solve the problem for us — it is scriptable, which is what matters for a large deployment.
Describe alternatives you've considered
- Setting the language on every conversation by hand. Not workable at our size, and it does not help conversations created later.
- Updating
oc_talk_rooms.transcription_language directly in the database. It would fix existing rooms but bypasses the service layer and still leaves new rooms defaulting to English.
- Changing the default in the
live_transcription app instead. That app already carries a # todo: declarative settings for language override note, but the value logically belongs to Talk, since Talk is what decides whether to send langId at all.
Additional context
Related: the same "make the default configurable instead of hardcoded" gap exists for the Photos and Talk attachment folder names, which we also hit on this deployment.
Nextcloud version: 34.0.3
Talk version: 24.0.4
live_transcription version: 2.1.3
Happy to open a PR for the app-config fallback if the approach sounds right to you.
Is your feature request related to a problem? Please describe.
The live transcription language is stored per conversation only.
LiveTranscriptionService::enable()reads$room->getLiveTranscriptionLanguageId()and omitslangIdentirely when it is empty, so thelive_transcriptionapp falls back to its hardcoded default (TranscribeRequest.langId: str = "en").On an instance where the spoken language is not English this means:
We run a Nextcloud for a public-sector organisation in Türkiye with several thousand users. Turkish is the language of essentially every call. There is no way to express that once for the whole instance.
Describe the solution you'd like
A server-level default that is used when a conversation has no explicit language set, for example:
LiveTranscriptionService::enable()would fall back to that value before falling back to the app's own default, and the conversation setting would continue to override it. The conversation settings dropdown could show it as "Default language (Türkçe)" instead of the current hardcoded "Default language (English)".An admin UI field in the Talk settings would be nice but the
occ/app-config key alone would already solve the problem for us — it is scriptable, which is what matters for a large deployment.Describe alternatives you've considered
oc_talk_rooms.transcription_languagedirectly in the database. It would fix existing rooms but bypasses the service layer and still leaves new rooms defaulting to English.live_transcriptionapp instead. That app already carries a# todo: declarative settings for language overridenote, but the value logically belongs to Talk, since Talk is what decides whether to sendlangIdat all.Additional context
Related: the same "make the default configurable instead of hardcoded" gap exists for the Photos and Talk attachment folder names, which we also hit on this deployment.
Nextcloud version: 34.0.3
Talk version: 24.0.4
live_transcription version: 2.1.3
Happy to open a PR for the app-config fallback if the approach sounds right to you.