mirror of
https://github.com/Monadical-SAS/reflector.git
synced 2025-12-20 20:29:06 +00:00
Scaleai Translation (#258)
* hotfix * remove assert from translation * review comments * reflector.media change targetLang to en
This commit is contained in:
@@ -1,7 +1,6 @@
|
|||||||
from time import monotonic
|
from time import monotonic
|
||||||
|
|
||||||
import httpx
|
import httpx
|
||||||
|
|
||||||
from reflector.processors.base import Processor
|
from reflector.processors.base import Processor
|
||||||
from reflector.processors.types import Transcript, TranslationLanguages
|
from reflector.processors.types import Transcript, TranslationLanguages
|
||||||
from reflector.settings import settings
|
from reflector.settings import settings
|
||||||
@@ -43,27 +42,26 @@ class TranscriptTranslatorProcessor(Processor):
|
|||||||
self.transcript = data
|
self.transcript = data
|
||||||
await self.flush()
|
await self.flush()
|
||||||
|
|
||||||
async def get_translation(self, text: str) -> str:
|
async def get_translation(self, text: str) -> str | None:
|
||||||
self.logger.debug(f"Try to translate {text=}")
|
|
||||||
# FIXME this should be a processor after, as each user may want
|
# FIXME this should be a processor after, as each user may want
|
||||||
# different languages
|
# different languages
|
||||||
|
|
||||||
source_language = self.get_pref("audio:source_language", "en")
|
source_language = self.get_pref("audio:source_language", "en")
|
||||||
target_language = self.get_pref("audio:target_language", "en")
|
target_language = self.get_pref("audio:target_language", "en")
|
||||||
|
if source_language == target_language:
|
||||||
|
return
|
||||||
|
|
||||||
languages = TranslationLanguages()
|
languages = TranslationLanguages()
|
||||||
|
|
||||||
# Only way to set the target should be the UI element like dropdown.
|
# Only way to set the target should be the UI element like dropdown.
|
||||||
# Hence, this assert should never fail.
|
# Hence, this assert should never fail.
|
||||||
assert languages.is_supported(target_language)
|
assert languages.is_supported(target_language)
|
||||||
assert target_language != source_language
|
self.logger.debug(f"Try to translate {text=}")
|
||||||
source_language = self.get_pref("audio:source_language", "en")
|
|
||||||
target_language = self.get_pref("audio:target_language", "en")
|
|
||||||
json_payload = {
|
json_payload = {
|
||||||
"text": text,
|
"text": text,
|
||||||
"source_language": source_language,
|
"source_language": source_language,
|
||||||
"target_language": target_language,
|
"target_language": target_language,
|
||||||
}
|
}
|
||||||
translation = None
|
|
||||||
async with httpx.AsyncClient() as client:
|
async with httpx.AsyncClient() as client:
|
||||||
response = await retry(client.post)(
|
response = await retry(client.post)(
|
||||||
settings.TRANSCRIPT_URL + "/translate",
|
settings.TRANSCRIPT_URL + "/translate",
|
||||||
@@ -75,7 +73,7 @@ class TranscriptTranslatorProcessor(Processor):
|
|||||||
result = response.json()["text"]
|
result = response.json()["text"]
|
||||||
|
|
||||||
# Sanity check for translation status in the result
|
# Sanity check for translation status in the result
|
||||||
if source_language != target_language and target_language in result:
|
if target_language in result:
|
||||||
translation = result[target_language]
|
translation = result[target_language]
|
||||||
self.logger.debug(f"Translation response: {text=}, {translation=}")
|
self.logger.debug(f"Translation response: {text=}, {translation=}")
|
||||||
return translation
|
return translation
|
||||||
@@ -83,6 +81,7 @@ class TranscriptTranslatorProcessor(Processor):
|
|||||||
async def _flush(self):
|
async def _flush(self):
|
||||||
if not self.transcript:
|
if not self.transcript:
|
||||||
return
|
return
|
||||||
translation = await self.get_translation(text=self.transcript.text)
|
self.transcript.translation = await self.get_translation(
|
||||||
self.transcript.translation = translation
|
text=self.transcript.text
|
||||||
|
)
|
||||||
await self.emit(self.transcript)
|
await self.emit(self.transcript)
|
||||||
|
|||||||
@@ -56,7 +56,7 @@ const useTranscript = (
|
|||||||
const requestParameters: V1TranscriptsCreateRequest = {
|
const requestParameters: V1TranscriptsCreateRequest = {
|
||||||
createTranscript: {
|
createTranscript: {
|
||||||
name: "Weekly All-Hands", // Hardcoded for now
|
name: "Weekly All-Hands", // Hardcoded for now
|
||||||
targetLanguage: "fr", // Hardcoded for now
|
targetLanguage: "en", // Hardcoded for now
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user