Translates the text you paste in into the languages you list and emails you each one spoken as an audio file.

UsesElevenLabsGmailGoogle Translate

Say your words in another language

Paste in what you want to say and list the languages you want it in, then run it. Each language is translated in turn, the translation is spoken by an ElevenLabs voice, and you are emailed one message per language with the translated text to read and the spoken version attached as an audio file you can play or hand on.

You end up with one email per language, each stating which language was asked for and which language your original was read as, and carrying both the translation and your original text so anything the voice says can be checked against the words it was given. The audio is always spoken from the translation, never from your original: a language that comes back untranslated is skipped and counted rather than read out in the wrong language. If no audio file is produced, no email goes out for that language, so you never get a message promising an attachment that is not there. One language failing does not stop the rest.

ValuesSet sourceText to blank.Set sourceText to blank.
ValuesSet targetLanguages to blank.Set targetLanguages to blank.
ValuesSet voiceId to blank.Set voiceId to blank.
ValuesSet sendTo to blank.Set sendTo to blank.
ValuesSet maxLanguages to 5.Set maxLanguages to 5.
TextTrim sourceText and save it as scriptText.Trim sourceText and save it as scriptText.
TextTrim sendTo and save it as recipient.Trim sendTo and save it as recipient.
Decisions & LoopsIf not recipient is a valid email addressIf not recipient is a valid email address
Yes
Decisions & LoopsStop and report a problem: The 'sendTo' step is not a valid email address, so there is nowhere to send the audio.Stop and report a problem: The 'sendTo' step is not a valid email address, so there is nowhere to send the audio.
No
No steps
ValuesSet spokenCount to 0.Set spokenCount to 0.
ValuesSet failedCount to 0.Set failedCount to 0.
ValuesSet skippedNoTranslation to 0.Set skippedNoTranslation to 0.
ValuesSet skippedNoAudio to 0.Set skippedNoAudio to 0.
Decisions & LoopsFor each language in targetLanguages split by ,:For each language in targetLanguages split by ,:
TextTrim language and save it as languageCode.Trim language and save it as languageCode.
Decisions & LoopsIf languageCode is empty or languageCode is nullIf languageCode is empty or languageCode is null
Yes
Decisions & LoopsSkip to the next item.Skip to the next item.
No
No steps
Decisions & LoopsIf spokenCount is greater than or equal to maxLanguages multiplied by 1If spokenCount is greater than or equal to maxLanguages multiplied by 1
Yes
Decisions & LoopsStop repeating.Stop repeating.
No
No steps
Decisions & LoopsIf a step below fails, save the error as languageErrorIf a step below fails, save the error as languageError
Try
Google TranslateGoogle TranslateTranslate scriptText into languageCode. Save it as translation.Translate scriptText into languageCode. Save it as translation.
TextTrim translation.translated_text and save it as spokenScript.Trim translation.translated_text and save it as spokenScript.
Decisions & LoopsIf spokenScript is empty or spokenScript is nullIf spokenScript is empty or spokenScript is null
Yes
ValuesAdd 1 to skippedNoTranslation.Add 1 to skippedNoTranslation.
Decisions & LoopsSkip to the next item.Skip to the next item.
No
No steps
ElevenLabsElevenLabsConvert text to speech with voice voiceId. Save it as speech.Convert text to speech with voice voiceId. Save it as speech.spokenScript
TextTrim speech.document_ref and save it as audioRef.Trim speech.document_ref and save it as audioRef.
Decisions & LoopsIf audioRef is empty or audioRef is nullIf audioRef is empty or audioRef is null
Yes
ValuesAdd 1 to skippedNoAudio.Add 1 to skippedNoAudio.
Decisions & LoopsSkip to the next item.Skip to the next item.
No
No steps
TextTrim translation.detected_source_language and save it as detected.Trim translation.detected_source_language and save it as detected.
Decisions & LoopsIf detected is null or detected is emptyIf detected is null or detected is empty
Yes
ValuesChange detected to not reported.Change detected to not reported.
No
No steps
ValuesSet messageBody to Language asked for: languageCodeSet messageBody to Language asked for: languageCode Language the original was read as: detected.
ValuesChange messageBody to messageBodyChange messageBody to messageBody The attached audio speaks this text: spokenScript.
ValuesChange messageBody to messageBodyChange messageBody to messageBody The text it was translated from: scriptText.
GmailGmailSend an email to sendTo.Send an email to sendTo. Subject: Spoken translation (languageCode)messageBody
ValuesAdd 1 to spokenCount.Add 1 to spokenCount.
On error
ValuesAdd 1 to failedCount.Add 1 to failedCount.
ValuesShow in the output: Could not produce audio for languageCode: languageError as text.Show in the output: Could not produce audio for languageCode: languageError as text.
Decisions & LoopsIf spokenCount is 0If spokenCount is 0
Yes
Decisions & LoopsStop and report a problem: No audio was produced, so nothing was emailed. Check the language codes in 'targetLanguages' are Google Translate codes such as es, fr or ja, and that the id in 'voiceId' is a voice your ElevenLabs account can use.Stop and report a problem: No audio was produced, so nothing was emailed. Check the language codes in 'targetLanguages' are Google Translate codes such as es, fr or ja, and that the id in 'voiceId' is a voice your ElevenLabs account can use.
No
No steps
ValuesSet summary to Languages spoken and emailed: spokenCount as text.Set summary to Languages spoken and emailed: spokenCount as text.
ValuesChange summary to summary. Skipped, nothing came back to translate: skippedNoTranslation as text.Change summary to summary. Skipped, nothing came back to translate: skippedNoTranslation as text.
ValuesChange summary to summary. Skipped, no audio file was produced: skippedNoAudio as text.Change summary to summary. Skipped, no audio file was produced: skippedNoAudio as text.
ValuesChange summary to summary. Failed outright: failedCount as text.Change summary to summary. Failed outright: failedCount as text.
ValuesShow in the output: summary.Show in the output: summary.