alonsosilva commited on
Commit
a9270ab
·
1 Parent(s): c25dca8

Fix small bug

Browse files
Files changed (1) hide show
  1. app.py +28 -21
app.py CHANGED
@@ -1,5 +1,5 @@
1
- #from dotenv import load_dotenv, find_dotenv
2
- #_ = load_dotenv(find_dotenv())
3
 
4
  import solara
5
  from typing import List
@@ -15,6 +15,7 @@ from ipywebrtc import AudioRecorder, CameraStream, AudioStream
15
  import ipywidgets
16
  from whispercpp import Whisper
17
  from elevenlabs import voices, generate, save, set_api_key
 
18
 
19
  w = Whisper('tiny')
20
 
@@ -27,8 +28,6 @@ from langchain.chat_models import ChatOpenAI
27
 
28
  llm = ChatOpenAI(temperature=0.7)
29
 
30
- camera = CameraStream(constraints={'audio': True,'video':False})
31
- recorder = AudioRecorder(stream=camera)
32
 
33
  from IPython.display import display
34
 
@@ -37,16 +36,6 @@ user_message_count = solara.reactive(0)
37
  resultado = solara.reactive("")
38
 
39
  @solara.component
40
- def MyButton():
41
- def transcribe_voice():
42
- with NamedTemporaryFile(suffix=".webm") as temp:
43
- with open(f"{temp.name}", 'wb') as f:
44
- f.write(recorder.audio.value)
45
- result = w.transcribe(f"{temp.name}", lang="en")
46
- text = w.extract_text(result)
47
- resultado.value = text[0]
48
- messages.value = [*messages.value, {"role": "user", "content": f"{resultado.value}"},]
49
- solara.Button("Send voice message", on_click=transcribe_voice)
50
 
51
  @solara.component
52
  def Page():
@@ -77,7 +66,19 @@ def Page():
77
  with solara.Sidebar():
78
  solara.Markdown("# Send a voice message")
79
  solara.Markdown("## Recorder")
 
 
80
  display(recorder)
 
 
 
 
 
 
 
 
 
 
81
  MyButton()
82
  if resultado.value != "":
83
  solara.Markdown("## Transcribed message:")
@@ -92,11 +93,17 @@ def Page():
92
  ):
93
  solara.Markdown(item["content"])
94
  if counter == 2*user_message_count.value-1:
95
- voice_name = "Adam"
96
- model_name = "eleven_monolingual_v1"
97
- audio = generate(text=f"{messages.value[-1]['content']}", voice=voice_name, model=model_name)
98
  with NamedTemporaryFile(suffix=".mp3") as temp:
99
- save(audio, f"{temp.name}")
100
- audio = ipywidgets.Audio.from_file(filename=f"{temp.name}", autoplay=False, loop=False)
101
- display(audio)
102
- solara.lab.ChatInput(send_callback=send)
 
 
 
 
 
 
 
 
 
1
+ from dotenv import load_dotenv, find_dotenv
2
+ _ = load_dotenv(find_dotenv())
3
 
4
  import solara
5
  from typing import List
 
15
  import ipywidgets
16
  from whispercpp import Whisper
17
  from elevenlabs import voices, generate, save, set_api_key
18
+ from gtts import gTTS
19
 
20
  w = Whisper('tiny')
21
 
 
28
 
29
  llm = ChatOpenAI(temperature=0.7)
30
 
 
 
31
 
32
  from IPython.display import display
33
 
 
36
  resultado = solara.reactive("")
37
 
38
  @solara.component
 
 
 
 
 
 
 
 
 
 
39
 
40
  @solara.component
41
  def Page():
 
66
  with solara.Sidebar():
67
  solara.Markdown("# Send a voice message")
68
  solara.Markdown("## Recorder")
69
+ camera = CameraStream(constraints={'audio': True,'video':False})
70
+ recorder = AudioRecorder(stream=camera)
71
  display(recorder)
72
+ def MyButton():
73
+ def transcribe_voice():
74
+ with NamedTemporaryFile(suffix=".webm") as temp:
75
+ with open(f"{temp.name}", 'wb') as f:
76
+ f.write(recorder.audio.value)
77
+ result = w.transcribe(f"{temp.name}", lang="en")
78
+ text = w.extract_text(result)
79
+ resultado.value = text[0]
80
+ messages.value = [*messages.value, {"role": "user", "content": f"{resultado.value}"},]
81
+ solara.Button("Send voice message", on_click=transcribe_voice)
82
  MyButton()
83
  if resultado.value != "":
84
  solara.Markdown("## Transcribed message:")
 
93
  ):
94
  solara.Markdown(item["content"])
95
  if counter == 2*user_message_count.value-1:
96
+ tts = gTTS(f"{messages.value[-1]['content']}")
 
 
97
  with NamedTemporaryFile(suffix=".mp3") as temp:
98
+ tts.save(f"{temp.name}")
99
+ audio = ipywidgets.Audio.from_file(filename=f"{temp.name}", autoplay=True, loop=False)
100
+ if generated_response.state != solara.ResultState.RUNNING:
101
+ display(audio)
102
+ # voice_name = "Adam"
103
+ # model_name = "eleven_monolingual_v1"
104
+ # audio = generate(text=f"{messages.value[-1]['content']}", voice=voice_name, model=model_name)
105
+ # with NamedTemporaryFile(suffix=".mp3") as temp:
106
+ # save(audio, f"{temp.name}")
107
+ # audio = ipywidgets.Audio.from_file(filename=f"{temp.name}", autoplay=False, loop=False)
108
+ # display(audio)
109
+ solara.lab.ChatInput(send_callback=send, disabled=(generated_response.state == solara.ResultState.RUNNING))