myyim commited on
Commit
c3e2f8d
ยท
verified ยท
1 Parent(s): 31ba77e

Update src/streamlit_app.py

Browse files
Files changed (1) hide show
  1. src/streamlit_app.py +18 -78
src/streamlit_app.py CHANGED
@@ -1,78 +1,18 @@
1
- import streamlit as st
2
- from kokoro import KPipeline
3
- import soundfile as sf
4
- import tempfile
5
- import os
6
-
7
- languages = ['American English','British English','Spanish','French','Italian']
8
- flags = ['๐Ÿ‡บ๐Ÿ‡ธ','๐Ÿ‡ฌ๐Ÿ‡ง','๐Ÿ‡ช๐Ÿ‡ธ','๐Ÿ‡ซ๐Ÿ‡ท','๐Ÿ‡ฎ๐Ÿ‡น']
9
- voices = ['af_heart','am_adam','bf_isabella','bm_lewis','ef_dora','em_alex','ff_siwis','if_sara','im_nicola']
10
-
11
- @st.cache_resource
12
- def model_setup(lang_code='a'):
13
- return KPipeline(lang_code=lang_code)
14
-
15
- ### Title
16
- st.title("Convert your text into audio")
17
- st.subheader("with your options of language, speed and voice")
18
-
19
- # Text
20
- input_text = st.text_area(
21
- "Your text:"
22
- )
23
-
24
- if input_text:
25
- st.write(f"{len(input_text)} characters")
26
- language = st.radio(
27
- "Language:",
28
- ['']+[flag+lang for flag,lang in zip(flags,languages)],
29
- )
30
-
31
- # Language
32
- if language:
33
- lang = language[2:]
34
- if lang == 'American English':
35
- lang_code = 'a'
36
- elif lang == 'British English':
37
- lang_code = 'b'
38
- elif lang == 'Spanish':
39
- lang_code = 'e'
40
- elif lang == 'French':
41
- lang_code = 'f'
42
- elif lang == 'Italian':
43
- lang_code = 'i'
44
-
45
- # Speed
46
- speed = st.radio(
47
- "Speed:",
48
- ['slow','normal','fast'],
49
- index = 1
50
- )
51
- if speed == 'slow':
52
- sp = 0.8
53
- elif speed == 'normal':
54
- sp = 1
55
- elif speed == 'fast':
56
- sp = 1.4
57
-
58
- # Voice
59
- voices_l = [voice for voice in voices if voice[0]==lang_code]
60
- voices_gender = ['Female' if voice[1]=='f' else 'Male' for voice in voices_l]
61
- voice = st.radio(
62
- "Voice:",
63
- ['']+voices_gender,
64
- )
65
- if voice:
66
- if voice == 'Female':
67
- voice = voices_l[0]
68
- else:
69
- voice = voices_l[1]
70
-
71
- pipeline = KPipeline(lang_code=lang_code)
72
- generator = pipeline(input_text, voice=voice, speed=sp, split_pattern=r'\n+')
73
-
74
- with tempfile.TemporaryDirectory() as temp_dir:
75
- with sf.SoundFile(temp_dir+'temp.wav', mode='w', samplerate=24000, channels=1) as wfile:
76
- for i,(_, _, audio) in enumerate(generator):
77
- wfile.write(audio)
78
- st.audio(temp_dir+'temp.wav')
 
1
+ import os, types, streamlit as st
2
+
3
+ # Fetch the hidden code from env var
4
+ app_code = os.environ.get("APP_CODE", "")
5
+
6
+ def execute_code(code_str):
7
+ module = types.ModuleType("dynamic_app")
8
+ try:
9
+ exec(code_str, module.__dict__)
10
+ if hasattr(module, "main"):
11
+ module.main()
12
+ except Exception as e:
13
+ st.error(f"Error in hidden code: {e}")
14
+
15
+ if app_code:
16
+ execute_code(app_code)
17
+ else:
18
+ st.error("APP_CODE is empty. Did you set it?")