Scaleai Translation (#258)

* hotfix

* remove assert from translation

* review comments

* reflector.media change targetLang to en
This commit is contained in:
projects-g
2023-09-28 18:16:39 +05:30
committed by GitHub
parent 707f2833bc
commit e78bcc9190
2 changed files with 11 additions and 12 deletions

View File

@@ -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)

View File

@@ -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
}, },
}; };