rick commited on
Commit
026b176
ยท
unverified ยท
1 Parent(s): 3e38dbf

patch 1.2.12

Browse files
Files changed (5) hide show
  1. core/converter.py +99 -0
  2. core/core.py +72 -0
  3. core/text_to_speech.py +19 -0
  4. pages/main.py +21 -174
  5. var_app.py +29 -1
core/converter.py ADDED
@@ -0,0 +1,99 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ #coding: utf-8
2
+
3
+ from typing import Optional
4
+ from typing import Union
5
+ from typing import Dict
6
+ from typing import Any
7
+ from typing import List
8
+
9
+ def convert_language_name_to_iso6391(language_data: Union[str, Dict[str, str]]) -> str:
10
+ """
11
+ Convertit un nom de langue en son code ISO 639-1.
12
+
13
+ Args:
14
+ language_data (Union[str, Dict[str, str]]): Le nom de la langue ou un dictionnaire
15
+ contenant le nom de la langue.
16
+
17
+ Returns:
18
+ str: Le code ISO 639-1 pour la langue donnรฉe, ou 'en' si non trouvรฉ.
19
+ """
20
+ # Dictionnaire associant les noms de langues aux codes ISO 639-1
21
+ language_to_iso: Dict[str, str] = {
22
+ "Afrikaans": "af", "Arabic": "ar", "Armenian": "hy", "Azerbaijani": "az",
23
+ "Belarusian": "be", "Bosnian": "bs", "Bulgarian": "bg", "Catalan": "ca",
24
+ "Chinese": "zh", "Croatian": "hr", "Czech": "cs", "Danish": "da",
25
+ "Dutch": "nl", "English": "en", "Estonian": "et", "Finnish": "fi",
26
+ "French": "fr", "Galician": "gl", "German": "de", "Greek": "el",
27
+ "Hebrew": "he", "Hindi": "hi", "Hungarian": "hu", "Icelandic": "is",
28
+ "Indonesian": "id", "Italian": "it", "Japanese": "ja", "Kannada": "kn",
29
+ "Kazakh": "kk", "Korean": "ko", "Latvian": "lv", "Lithuanian": "lt",
30
+ "Macedonian": "mk", "Malay": "ms", "Marathi": "mr", "Maori": "mi",
31
+ "Nepali": "ne", "Norwegian": "no", "Persian": "fa", "Polish": "pl",
32
+ "Portuguese": "pt", "Romanian": "ro", "Russian": "ru", "Serbian": "sr",
33
+ "Slovak": "sk", "Slovenian": "sl", "Spanish": "es", "Swahili": "sw",
34
+ "Swedish": "sv", "Tagalog": "tl", "Tamil": "ta", "Thai": "th",
35
+ "Turkish": "tr", "Ukrainian": "uk", "Urdu": "ur", "Vietnamese": "vi",
36
+ "Welsh": "cy"
37
+ }
38
+ default_ = "en"
39
+
40
+ # Vรฉrifier si language_data est un dictionnaire
41
+ if isinstance(language_data, dict):
42
+ language_name = language_data.get('language', '')
43
+ else:
44
+ language_name = language_data
45
+
46
+ try:
47
+ # Retourner le code ISO 639-1 correspondant au nom de la langue
48
+ return language_to_iso[language_name]
49
+ except KeyError:
50
+ if f"{language_name}" in language_to_iso.values():
51
+ return language_name
52
+ else:
53
+ # Gรฉrer spรฉcifiquement l'exception KeyError
54
+ print(f"Langue non trouvรฉe : {language_name}")
55
+ return default_
56
+
57
+
58
+
59
+ def convert_iso6391_to_language_name(language_code: str,
60
+ filter_mode=True) -> str:
61
+ """
62
+ Convertit un code ISO 639-1 en nom de langue.
63
+
64
+ Args:
65
+ language_code (str): Le code ISO 639-1 de la langue.
66
+
67
+ Returns:
68
+ str: Le nom de la langue correspondant au code ISO 639-1, ou 'English' si non trouvรฉ.
69
+ """
70
+ # Dictionnaire associant les codes ISO 639-1 aux noms de langues
71
+ iso_to_language: Dict[str, str] = {
72
+ "af": "Afrikaans", "ar": "Arabic", "hy": "Armenian", "az": "Azerbaijani",
73
+ "be": "Belarusian", "bs": "Bosnian", "bg": "Bulgarian", "ca": "Catalan",
74
+ "zh": "Chinese", "hr": "Croatian", "cs": "Czech", "da": "Danish",
75
+ "nl": "Dutch", "en": "English", "et": "Estonian", "fi": "Finnish",
76
+ "fr": "French", "gl": "Galician", "de": "German", "el": "Greek",
77
+ "he": "Hebrew", "hi": "Hindi", "hu": "Hungarian", "is": "Icelandic",
78
+ "id": "Indonesian", "it": "Italian", "ja": "Japanese", "kn": "Kannada",
79
+ "kk": "Kazakh", "ko": "Korean", "lv": "Latvian", "lt": "Lithuanian",
80
+ "mk": "Macedonian", "ms": "Malay", "mr": "Marathi", "mi": "Maori",
81
+ "ne": "Nepali", "no": "Norwegian", "fa": "Persian", "pl": "Polish",
82
+ "pt": "Portuguese", "ro": "Romanian", "ru": "Russian", "sr": "Serbian",
83
+ "sk": "Slovak", "sl": "Slovenian", "es": "Spanish", "sw": "Swahili",
84
+ "sv": "Swedish", "tl": "Tagalog", "ta": "Tamil", "th": "Thai",
85
+ "tr": "Turkish", "uk": "Ukrainian", "ur": "Urdu", "vi": "Vietnamese",
86
+ "cy": "Welsh"
87
+ }
88
+ default_ = "English"
89
+
90
+ try:
91
+ # Retourner le nom de la langue correspondant au code ISO 639-1
92
+ return iso_to_language[language_code]
93
+ except KeyError:
94
+ if f"{language_code}" in iso_to_language.values():
95
+ return language_code
96
+ else:
97
+ # Gรฉrer spรฉcifiquement l'exception KeyError
98
+ print(f"Code de langue non trouvรฉ : {language_code}")
99
+ return default_
core/core.py ADDED
@@ -0,0 +1,72 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ #coding: utf-8
2
+
3
+ import re
4
+ from os import getenv
5
+ #from typing import Any
6
+ #from typing import Dict
7
+ #from typing import IO
8
+ #from typing import List
9
+ from typing import Optional
10
+ #from typing import Tuple
11
+ #from typing import Union
12
+ from core.files import load_ui_language
13
+
14
+ import streamlit as st
15
+ from openai import OpenAI
16
+
17
+ from dotenv import load_dotenv
18
+ # Charger les variables d'environnement depuis le fichier .env
19
+ load_dotenv()
20
+
21
+ class uiLang:
22
+ # Dictionary to store translations
23
+ translations = load_ui_language()
24
+
25
+ translations=uiLang.translations
26
+
27
+ client = OpenAI(api_key=getenv("OPENAI_API_KEY"))
28
+
29
+ def get_translation(key: str) -> str:
30
+ """
31
+ Obtient la traduction pour une clรฉ donnรฉe basรฉe sur la langue d'interface sรฉlectionnรฉe.
32
+ """
33
+ lang = st.session_state.get('interface_language', 'English')
34
+ return translations.get(lang, {}).get(key, key)
35
+
36
+
37
+ def process_message(
38
+ message: str,
39
+ operation_prompt_: Optional[str] = "",
40
+ system_prompt_: Optional[str] = ""
41
+ ):
42
+ """
43
+ Traite les messages des utilisateurs et gรฉnรจre une rรฉponse.
44
+
45
+ Args:
46
+ message (str): Le message d'entrรฉe de l'utilisateur.
47
+ operation_prompt (str, optional): Prompt supplรฉmentaire pour l'opรฉration. Par dรฉfaut "".
48
+ tts_enabled (bool, optional): Si la synthรจse vocale est activรฉe. Par dรฉfaut False.
49
+
50
+ """
51
+ payload_content = f'{operation_prompt_} :\n"""\n{message}\n"""'
52
+ st.session_state.messages = [
53
+ {"role": "system", "content": system_prompt_},
54
+ {"role": "user", "content": payload_content}
55
+ ]
56
+ st.session_state["full_response"] = ""
57
+ try:
58
+ for response in client.chat.completions.create(
59
+ model="gpt-4o-mini",
60
+ messages=st.session_state.messages,
61
+ stream=True,
62
+ temperature=0.1):
63
+ st.session_state.full_response += (response.choices[0].delta.content or "")
64
+ yield st.session_state.full_response + "โ–Œ"
65
+
66
+ # Utiliser regex pour supprimer les trois premiers et derniers guillemets doubles
67
+ st.session_state.full_response = re.sub(r'^"{3}|"{3}$', '', st.session_state.full_response.strip())
68
+ st.session_state.messages = []
69
+ return st.session_state.full_response
70
+ except Exception as e:
71
+ st.error(f"Une erreur s'est produite lors de la gรฉnรฉration de la rรฉponse : {e}")
72
+ return ""
core/text_to_speech.py CHANGED
@@ -15,7 +15,11 @@ from base64 import b64encode
15
 
16
  from openai import OpenAI
17
  from pydub import AudioSegment
 
18
 
 
 
 
19
 
20
  class openai_tts(object):
21
  def __init__(self,
@@ -110,6 +114,21 @@ class openai_tts(object):
110
  "data_bytes": b64encode(data_output).decode()
111
  }
112
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
113
  """
114
  if __name__ == "__main__":
115
 
 
15
 
16
  from openai import OpenAI
17
  from pydub import AudioSegment
18
+ import streamlit as st
19
 
20
+ #from dotenv import load_dotenv
21
+ # Charger les variables d'environnement depuis le fichier .env
22
+ #load_dotenv()
23
 
24
  class openai_tts(object):
25
  def __init__(self,
 
114
  "data_bytes": b64encode(data_output).decode()
115
  }
116
 
117
+
118
+ def process_tts_message(text_response: str) -> Tuple[Optional[bytes], Optional[float]]:
119
+ try:
120
+ tts_output_ = openai_tts(
121
+ tts_voice=st.session_state.tts_voice,
122
+ tts_model="tts-1",
123
+ response_format="mp3",
124
+ speed=1.0
125
+ ).text_to_speech(text_response)
126
+
127
+ return tts_output_["data_bytes"], tts_output_["audio_duration"]
128
+ except Exception as e:
129
+ st.error(f"Une erreur s'est produite lors de la conversion texte-parole : {e}")
130
+ return None, None
131
+
132
  """
133
  if __name__ == "__main__":
134
 
pages/main.py CHANGED
@@ -27,8 +27,17 @@ import warnings
27
  # Ignore DeprecationWarning
28
  warnings.filterwarnings("ignore", category=DeprecationWarning)
29
 
 
 
 
 
30
  from var_app import __version__
31
- from core.files import load_ui_language
 
 
 
 
 
32
  from core.files import read_file
33
  from core.text_to_speech import openai_tts
34
  from core.DetectLanguage import detect_language
@@ -36,6 +45,12 @@ from core.speech_to_text import huggingface_endpoints_stt
36
  from core.speech_to_text import transcribe_audio
37
  from core.audio_files import concatenate_audio_files
38
  from core.audio_files import split_audio
 
 
 
 
 
 
39
 
40
  # Au dรฉbut du fichier, aprรจs les imports
41
  st.set_page_config(
@@ -44,69 +59,14 @@ st.set_page_config(
44
  layout="wide",
45
  initial_sidebar_state="collapsed"
46
  )
47
- client = OpenAI(api_key=os.getenv("OPENAI_API_KEY"))
48
 
49
- def get_translation(key: str) -> str:
50
- """
51
- Obtient la traduction pour une clรฉ donnรฉe basรฉe sur la langue d'interface sรฉlectionnรฉe.
52
- """
53
- lang = st.session_state.get('interface_language', 'English')
54
- return translations.get(lang, {}).get(key, key)
55
-
56
- # Dictionary to store translations
57
- translations = load_ui_language()
58
-
59
- def process_tts_message(text_response: str) -> Tuple[Optional[bytes], Optional[float]]:
60
- try:
61
- tts_output_ = openai_tts(
62
- tts_voice=st.session_state.tts_voice,
63
- tts_model="tts-1",
64
- response_format="mp3",
65
- speed=1.0
66
- ).text_to_speech(text_response)
67
-
68
- return tts_output_["data_bytes"], tts_output_["audio_duration"]
69
- except Exception as e:
70
- st.error(f"Une erreur s'est produite lors de la conversion texte-parole : {e}")
71
- return None, None
72
-
73
-
74
- def process_message(
75
- message: str,
76
- operation_prompt_: Optional[str] = "",
77
- system_prompt_: Optional[str] = ""
78
- ):
79
- """
80
- Traite les messages des utilisateurs et gรฉnรจre une rรฉponse.
81
 
82
- Args:
83
- message (str): Le message d'entrรฉe de l'utilisateur.
84
- operation_prompt (str, optional): Prompt supplรฉmentaire pour l'opรฉration. Par dรฉfaut "".
85
- tts_enabled (bool, optional): Si la synthรจse vocale est activรฉe. Par dรฉfaut False.
86
 
87
- """
88
- payload_content = f'{operation_prompt_} :\n"""\n{message}\n"""'
89
- st.session_state.messages = [
90
- {"role": "system", "content": system_prompt_},
91
- {"role": "user", "content": payload_content}
92
- ]
93
- st.session_state["full_response"] = ""
94
- try:
95
- for response in client.chat.completions.create(
96
- model="gpt-4o-mini",
97
- messages=st.session_state.messages,
98
- stream=True,
99
- temperature=0.1):
100
- st.session_state.full_response += (response.choices[0].delta.content or "")
101
- yield st.session_state.full_response + "โ–Œ"
102
-
103
- # Utiliser regex pour supprimer les trois premiers et derniers guillemets doubles
104
- st.session_state.full_response = re.sub(r'^"{3}|"{3}$', '', st.session_state.full_response.strip())
105
- st.session_state.messages = []
106
- return st.session_state.full_response
107
- except Exception as e:
108
- st.error(f"Une erreur s'est produite lors de la gรฉnรฉration de la rรฉponse : {e}")
109
- return ""
110
 
111
  class GlobalSystemPrompts:
112
  """Class to store global system prompts."""
@@ -145,123 +105,10 @@ def set_translation_mode(from_lang: str, dest_lang: str) -> Tuple[str, str]:
145
  operation_prompt_ = f"Translate({from_lang} to {dest_lang})"
146
  return system_prompt_, operation_prompt_
147
 
148
- # List of languages supported by the application
149
- SUPPORTED_LANGUAGES = [
150
- "Afrikaans", "Arabic", "Armenian", "Azerbaijani", "Belarusian", "Bosnian",
151
- "Bulgarian", "Catalan", "Chinese", "Croatian", "Czech", "Danish", "Dutch",
152
- "English", "Estonian", "Finnish", "French", "Galician", "German", "Greek",
153
- "Hebrew", "Hindi", "Hungarian", "Icelandic", "Indonesian", "Italian",
154
- "Japanese", "Kannada", "Kazakh", "Korean", "Latvian", "Lithuanian",
155
- "Macedonian", "Malay", "Marathi", "Maori", "Nepali", "Norwegian", "Persian",
156
- "Polish", "Portuguese", "Romanian", "Russian", "Serbian", "Slovak",
157
- "Slovenian", "Spanish", "Swahili", "Swedish", "Tagalog", "Tamil", "Thai",
158
- "Turkish", "Ukrainian", "Urdu", "Vietnamese", "Welsh"
159
- ]
160
-
161
- LANGUAGES_EMOJI = {
162
- "Afrikaans": "๐Ÿ‡ฟ๐Ÿ‡ฆ", "Arabic": "๐Ÿ‡ธ๐Ÿ‡ฆ", "Armenian": "๐Ÿ‡ฆ๐Ÿ‡ฒ", "Azerbaijani": "๐Ÿ‡ฆ๐Ÿ‡ฟ", "Belarusian": "๐Ÿ‡ง๐Ÿ‡พ",
163
- "Bosnian": "๐Ÿ‡ง๐Ÿ‡ฆ", "Bulgarian": "๐Ÿ‡ง๐Ÿ‡ฌ", "Catalan": "๐Ÿ‡ช๐Ÿ‡ธ", "Chinese": "๐Ÿ‡จ๐Ÿ‡ณ", "Croatian": "๐Ÿ‡ญ๐Ÿ‡ท",
164
- "Czech": "๐Ÿ‡จ๐Ÿ‡ฟ", "Danish": "๐Ÿ‡ฉ๐Ÿ‡ฐ", "Dutch": "๐Ÿ‡ณ๐Ÿ‡ฑ", "English": "๐Ÿ‡ฌ๐Ÿ‡ง", "Estonian": "๐Ÿ‡ช๐Ÿ‡ช",
165
- "Finnish": "๐Ÿ‡ซ๐Ÿ‡ฎ", "French": "๐Ÿ‡ซ๐Ÿ‡ท", "Galician": "๐Ÿ‡ช๐Ÿ‡ธ", "German": "๐Ÿ‡ฉ๐Ÿ‡ช", "Greek": "๐Ÿ‡ฌ๐Ÿ‡ท",
166
- "Hebrew": "๐Ÿ‡ฎ๐Ÿ‡ฑ", "Hindi": "๐Ÿ‡ฎ๐Ÿ‡ณ", "Hungarian": "๐Ÿ‡ญ๐Ÿ‡บ", "Icelandic": "๐Ÿ‡ฎ๐Ÿ‡ธ", "Indonesian": "๐Ÿ‡ฎ๐Ÿ‡ฉ",
167
- "Italian": "๐Ÿ‡ฎ๐Ÿ‡น", "Japanese": "๐Ÿ‡ฏ๐Ÿ‡ต", "Kannada": "๐Ÿ‡ฎ๐Ÿ‡ณ", "Kazakh": "๐Ÿ‡ฐ๐Ÿ‡ฟ", "Korean": "๐Ÿ‡ฐ๐Ÿ‡ท",
168
- "Latvian": "๐Ÿ‡ฑ๐Ÿ‡ป", "Lithuanian": "๐Ÿ‡ฑ๐Ÿ‡น", "Macedonian": "๐Ÿ‡ฒ๐Ÿ‡ฐ", "Malay": "๐Ÿ‡ฒ๐Ÿ‡พ", "Marathi": "๐Ÿ‡ฎ๐Ÿ‡ณ",
169
- "Maori": "๐Ÿ‡ณ๐Ÿ‡ฟ", "Nepali": "๐Ÿ‡ณ๐Ÿ‡ต", "Norwegian": "๐Ÿ‡ณ๐Ÿ‡ด", "Persian": "๐Ÿ‡ฎ๐Ÿ‡ท", "Polish": "๐Ÿ‡ต๐Ÿ‡ฑ",
170
- "Portuguese": "๐Ÿ‡ต๐Ÿ‡น", "Romanian": "๐Ÿ‡ท๐Ÿ‡ด", "Russian": "๐Ÿ‡ท๐Ÿ‡บ", "Serbian": "๐Ÿ‡ท๐Ÿ‡ธ", "Slovak": "๐Ÿ‡ธ๐Ÿ‡ฐ",
171
- "Slovenian": "๐Ÿ‡ธ๐Ÿ‡ฎ", "Spanish": "๐Ÿ‡ช๐Ÿ‡ธ", "Swahili": "๐Ÿ‡ฐ๐Ÿ‡ช", "Swedish": "๐Ÿ‡ธ๐Ÿ‡ช", "Tagalog": "๐Ÿ‡ต๐Ÿ‡ญ",
172
- "Tamil": "๐Ÿ‡ฎ๐Ÿ‡ณ", "Thai": "๐Ÿ‡น๐Ÿ‡ญ", "Turkish": "๐Ÿ‡น๐Ÿ‡ท", "Ukrainian": "๐Ÿ‡บ๐Ÿ‡ฆ", "Urdu": "๐Ÿ‡ต๐Ÿ‡ฐ",
173
- "Vietnamese": "๐Ÿ‡ป๐Ÿ‡ณ", "Welsh": "๐Ÿด๓ ง๓ ข๓ ท๓ ฌ๓ ณ๓ ฟ"
174
- }
175
-
176
- def convert_iso6391_to_language_name(language_code: str,
177
- filter_mode=True) -> str:
178
- """
179
- Convertit un code ISO 639-1 en nom de langue.
180
 
181
- Args:
182
- language_code (str): Le code ISO 639-1 de la langue.
183
-
184
- Returns:
185
- str: Le nom de la langue correspondant au code ISO 639-1, ou 'English' si non trouvรฉ.
186
- """
187
- # Dictionnaire associant les codes ISO 639-1 aux noms de langues
188
- iso_to_language: Dict[str, str] = {
189
- "af": "Afrikaans", "ar": "Arabic", "hy": "Armenian", "az": "Azerbaijani",
190
- "be": "Belarusian", "bs": "Bosnian", "bg": "Bulgarian", "ca": "Catalan",
191
- "zh": "Chinese", "hr": "Croatian", "cs": "Czech", "da": "Danish",
192
- "nl": "Dutch", "en": "English", "et": "Estonian", "fi": "Finnish",
193
- "fr": "French", "gl": "Galician", "de": "German", "el": "Greek",
194
- "he": "Hebrew", "hi": "Hindi", "hu": "Hungarian", "is": "Icelandic",
195
- "id": "Indonesian", "it": "Italian", "ja": "Japanese", "kn": "Kannada",
196
- "kk": "Kazakh", "ko": "Korean", "lv": "Latvian", "lt": "Lithuanian",
197
- "mk": "Macedonian", "ms": "Malay", "mr": "Marathi", "mi": "Maori",
198
- "ne": "Nepali", "no": "Norwegian", "fa": "Persian", "pl": "Polish",
199
- "pt": "Portuguese", "ro": "Romanian", "ru": "Russian", "sr": "Serbian",
200
- "sk": "Slovak", "sl": "Slovenian", "es": "Spanish", "sw": "Swahili",
201
- "sv": "Swedish", "tl": "Tagalog", "ta": "Tamil", "th": "Thai",
202
- "tr": "Turkish", "uk": "Ukrainian", "ur": "Urdu", "vi": "Vietnamese",
203
- "cy": "Welsh"
204
- }
205
- default_ = "English"
206
-
207
- try:
208
- # Retourner le nom de la langue correspondant au code ISO 639-1
209
- return iso_to_language[language_code]
210
- except KeyError:
211
- if f"{language_code}" in iso_to_language.values():
212
- return language_code
213
- else:
214
- # Gรฉrer spรฉcifiquement l'exception KeyError
215
- print(f"Code de langue non trouvรฉ : {language_code}")
216
- return default_
217
 
218
- def convert_language_name_to_iso6391(language_data: Union[str, Dict[str, str]]) -> str:
219
- """
220
- Convertit un nom de langue en son code ISO 639-1.
221
 
222
- Args:
223
- language_data (Union[str, Dict[str, str]]): Le nom de la langue ou un dictionnaire
224
- contenant le nom de la langue.
225
 
226
- Returns:
227
- str: Le code ISO 639-1 pour la langue donnรฉe, ou 'en' si non trouvรฉ.
228
- """
229
- # Dictionnaire associant les noms de langues aux codes ISO 639-1
230
- language_to_iso: Dict[str, str] = {
231
- "Afrikaans": "af", "Arabic": "ar", "Armenian": "hy", "Azerbaijani": "az",
232
- "Belarusian": "be", "Bosnian": "bs", "Bulgarian": "bg", "Catalan": "ca",
233
- "Chinese": "zh", "Croatian": "hr", "Czech": "cs", "Danish": "da",
234
- "Dutch": "nl", "English": "en", "Estonian": "et", "Finnish": "fi",
235
- "French": "fr", "Galician": "gl", "German": "de", "Greek": "el",
236
- "Hebrew": "he", "Hindi": "hi", "Hungarian": "hu", "Icelandic": "is",
237
- "Indonesian": "id", "Italian": "it", "Japanese": "ja", "Kannada": "kn",
238
- "Kazakh": "kk", "Korean": "ko", "Latvian": "lv", "Lithuanian": "lt",
239
- "Macedonian": "mk", "Malay": "ms", "Marathi": "mr", "Maori": "mi",
240
- "Nepali": "ne", "Norwegian": "no", "Persian": "fa", "Polish": "pl",
241
- "Portuguese": "pt", "Romanian": "ro", "Russian": "ru", "Serbian": "sr",
242
- "Slovak": "sk", "Slovenian": "sl", "Spanish": "es", "Swahili": "sw",
243
- "Swedish": "sv", "Tagalog": "tl", "Tamil": "ta", "Thai": "th",
244
- "Turkish": "tr", "Ukrainian": "uk", "Urdu": "ur", "Vietnamese": "vi",
245
- "Welsh": "cy"
246
- }
247
- default_ = "en"
248
-
249
- # Vรฉrifier si language_data est un dictionnaire
250
- if isinstance(language_data, dict):
251
- language_name = language_data.get('language', '')
252
- else:
253
- language_name = language_data
254
-
255
- try:
256
- # Retourner le code ISO 639-1 correspondant au nom de la langue
257
- return language_to_iso[language_name]
258
- except KeyError:
259
- if f"{language_name}" in language_to_iso.values():
260
- return language_name
261
- else:
262
- # Gรฉrer spรฉcifiquement l'exception KeyError
263
- print(f"Langue non trouvรฉe : {language_name}")
264
- return default_
265
 
266
  def init_process_mode(
267
  from_lang: str,
 
27
  # Ignore DeprecationWarning
28
  warnings.filterwarnings("ignore", category=DeprecationWarning)
29
 
30
+ from dotenv import load_dotenv
31
+ # Charger les variables d'environnement depuis le fichier .env
32
+ load_dotenv()
33
+
34
  from var_app import __version__
35
+ from var_app import LANGUAGES_EMOJI
36
+ from var_app import SUPPORTED_LANGUAGES
37
+ from core.core import translations
38
+ from core.core import get_translation
39
+ from core.converter import convert_iso6391_to_language_name
40
+ from core.converter import convert_language_name_to_iso6391
41
  from core.files import read_file
42
  from core.text_to_speech import openai_tts
43
  from core.DetectLanguage import detect_language
 
45
  from core.speech_to_text import transcribe_audio
46
  from core.audio_files import concatenate_audio_files
47
  from core.audio_files import split_audio
48
+ from core.text_to_speech import process_tts_message
49
+ from core.files import load_ui_language
50
+ from core.core import process_message
51
+
52
+
53
+
54
 
55
  # Au dรฉbut du fichier, aprรจs les imports
56
  st.set_page_config(
 
59
  layout="wide",
60
  initial_sidebar_state="collapsed"
61
  )
 
62
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
63
 
 
 
 
 
64
 
65
+
66
+
67
+
68
+
69
+
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
70
 
71
  class GlobalSystemPrompts:
72
  """Class to store global system prompts."""
 
105
  operation_prompt_ = f"Translate({from_lang} to {dest_lang})"
106
  return system_prompt_, operation_prompt_
107
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
108
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
109
 
 
 
 
110
 
 
 
 
111
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
112
 
113
  def init_process_mode(
114
  from_lang: str,
var_app.py CHANGED
@@ -1 +1,29 @@
1
- __version__ = "1.2.11"
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ __version__ = "1.2.12"
2
+
3
+ # List of languages supported by the application
4
+ SUPPORTED_LANGUAGES = [
5
+ "Afrikaans", "Arabic", "Armenian", "Azerbaijani", "Belarusian", "Bosnian",
6
+ "Bulgarian", "Catalan", "Chinese", "Croatian", "Czech", "Danish", "Dutch",
7
+ "English", "Estonian", "Finnish", "French", "Galician", "German", "Greek",
8
+ "Hebrew", "Hindi", "Hungarian", "Icelandic", "Indonesian", "Italian",
9
+ "Japanese", "Kannada", "Kazakh", "Korean", "Latvian", "Lithuanian",
10
+ "Macedonian", "Malay", "Marathi", "Maori", "Nepali", "Norwegian", "Persian",
11
+ "Polish", "Portuguese", "Romanian", "Russian", "Serbian", "Slovak",
12
+ "Slovenian", "Spanish", "Swahili", "Swedish", "Tagalog", "Tamil", "Thai",
13
+ "Turkish", "Ukrainian", "Urdu", "Vietnamese", "Welsh"
14
+ ]
15
+
16
+ LANGUAGES_EMOJI = {
17
+ "Afrikaans": "๐Ÿ‡ฟ๐Ÿ‡ฆ", "Arabic": "๐Ÿ‡ธ๐Ÿ‡ฆ", "Armenian": "๐Ÿ‡ฆ๐Ÿ‡ฒ", "Azerbaijani": "๐Ÿ‡ฆ๐Ÿ‡ฟ", "Belarusian": "๐Ÿ‡ง๐Ÿ‡พ",
18
+ "Bosnian": "๐Ÿ‡ง๐Ÿ‡ฆ", "Bulgarian": "๐Ÿ‡ง๐Ÿ‡ฌ", "Catalan": "๐Ÿ‡ช๐Ÿ‡ธ", "Chinese": "๐Ÿ‡จ๐Ÿ‡ณ", "Croatian": "๐Ÿ‡ญ๐Ÿ‡ท",
19
+ "Czech": "๐Ÿ‡จ๐Ÿ‡ฟ", "Danish": "๐Ÿ‡ฉ๐Ÿ‡ฐ", "Dutch": "๐Ÿ‡ณ๐Ÿ‡ฑ", "English": "๐Ÿ‡ฌ๐Ÿ‡ง", "Estonian": "๐Ÿ‡ช๐Ÿ‡ช",
20
+ "Finnish": "๐Ÿ‡ซ๐Ÿ‡ฎ", "French": "๐Ÿ‡ซ๐Ÿ‡ท", "Galician": "๐Ÿ‡ช๐Ÿ‡ธ", "German": "๐Ÿ‡ฉ๐Ÿ‡ช", "Greek": "๐Ÿ‡ฌ๐Ÿ‡ท",
21
+ "Hebrew": "๐Ÿ‡ฎ๐Ÿ‡ฑ", "Hindi": "๐Ÿ‡ฎ๐Ÿ‡ณ", "Hungarian": "๐Ÿ‡ญ๐Ÿ‡บ", "Icelandic": "๐Ÿ‡ฎ๐Ÿ‡ธ", "Indonesian": "๐Ÿ‡ฎ๐Ÿ‡ฉ",
22
+ "Italian": "๐Ÿ‡ฎ๐Ÿ‡น", "Japanese": "๐Ÿ‡ฏ๐Ÿ‡ต", "Kannada": "๐Ÿ‡ฎ๐Ÿ‡ณ", "Kazakh": "๐Ÿ‡ฐ๐Ÿ‡ฟ", "Korean": "๐Ÿ‡ฐ๐Ÿ‡ท",
23
+ "Latvian": "๐Ÿ‡ฑ๐Ÿ‡ป", "Lithuanian": "๐Ÿ‡ฑ๐Ÿ‡น", "Macedonian": "๐Ÿ‡ฒ๐Ÿ‡ฐ", "Malay": "๐Ÿ‡ฒ๐Ÿ‡พ", "Marathi": "๐Ÿ‡ฎ๐Ÿ‡ณ",
24
+ "Maori": "๐Ÿ‡ณ๐Ÿ‡ฟ", "Nepali": "๐Ÿ‡ณ๐Ÿ‡ต", "Norwegian": "๐Ÿ‡ณ๐Ÿ‡ด", "Persian": "๐Ÿ‡ฎ๐Ÿ‡ท", "Polish": "๐Ÿ‡ต๐Ÿ‡ฑ",
25
+ "Portuguese": "๐Ÿ‡ต๐Ÿ‡น", "Romanian": "๐Ÿ‡ท๐Ÿ‡ด", "Russian": "๐Ÿ‡ท๐Ÿ‡บ", "Serbian": "๐Ÿ‡ท๐Ÿ‡ธ", "Slovak": "๐Ÿ‡ธ๐Ÿ‡ฐ",
26
+ "Slovenian": "๐Ÿ‡ธ๐Ÿ‡ฎ", "Spanish": "๐Ÿ‡ช๐Ÿ‡ธ", "Swahili": "๐Ÿ‡ฐ๐Ÿ‡ช", "Swedish": "๐Ÿ‡ธ๐Ÿ‡ช", "Tagalog": "๐Ÿ‡ต๐Ÿ‡ญ",
27
+ "Tamil": "๐Ÿ‡ฎ๐Ÿ‡ณ", "Thai": "๐Ÿ‡น๐Ÿ‡ญ", "Turkish": "๐Ÿ‡น๐Ÿ‡ท", "Ukrainian": "๐Ÿ‡บ๐Ÿ‡ฆ", "Urdu": "๐Ÿ‡ต๐Ÿ‡ฐ",
28
+ "Vietnamese": "๐Ÿ‡ป๐Ÿ‡ณ", "Welsh": "๐Ÿด๓ ง๓ ข๓ ท๓ ฌ๓ ณ๓ ฟ"
29
+ }