shasenem Akmyradov commited on
Commit
b042c1c
0 Parent(s):

Duplicate from Akmyradov/dost.ai

Browse files

Co-authored-by: Yslam <Akmyradov@users.noreply.huggingface.co>

Files changed (5) hide show
  1. .gitattributes +33 -0
  2. README.md +14 -0
  3. app.py +83 -0
  4. packages.txt +1 -0
  5. requirements.txt +8 -0
.gitattributes ADDED
@@ -0,0 +1,33 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ *.7z filter=lfs diff=lfs merge=lfs -text
2
+ *.arrow filter=lfs diff=lfs merge=lfs -text
3
+ *.bin filter=lfs diff=lfs merge=lfs -text
4
+ *.bz2 filter=lfs diff=lfs merge=lfs -text
5
+ *.ftz filter=lfs diff=lfs merge=lfs -text
6
+ *.gz filter=lfs diff=lfs merge=lfs -text
7
+ *.h5 filter=lfs diff=lfs merge=lfs -text
8
+ *.joblib filter=lfs diff=lfs merge=lfs -text
9
+ *.lfs.* filter=lfs diff=lfs merge=lfs -text
10
+ *.mlmodel filter=lfs diff=lfs merge=lfs -text
11
+ *.model filter=lfs diff=lfs merge=lfs -text
12
+ *.msgpack filter=lfs diff=lfs merge=lfs -text
13
+ *.npy filter=lfs diff=lfs merge=lfs -text
14
+ *.npz filter=lfs diff=lfs merge=lfs -text
15
+ *.onnx filter=lfs diff=lfs merge=lfs -text
16
+ *.ot filter=lfs diff=lfs merge=lfs -text
17
+ *.parquet filter=lfs diff=lfs merge=lfs -text
18
+ *.pb filter=lfs diff=lfs merge=lfs -text
19
+ *.pickle filter=lfs diff=lfs merge=lfs -text
20
+ *.pkl filter=lfs diff=lfs merge=lfs -text
21
+ *.pt filter=lfs diff=lfs merge=lfs -text
22
+ *.pth filter=lfs diff=lfs merge=lfs -text
23
+ *.rar filter=lfs diff=lfs merge=lfs -text
24
+ *.safetensors filter=lfs diff=lfs merge=lfs -text
25
+ saved_model/**/* filter=lfs diff=lfs merge=lfs -text
26
+ *.tar.* filter=lfs diff=lfs merge=lfs -text
27
+ *.tflite filter=lfs diff=lfs merge=lfs -text
28
+ *.tgz filter=lfs diff=lfs merge=lfs -text
29
+ *.wasm filter=lfs diff=lfs merge=lfs -text
30
+ *.xz filter=lfs diff=lfs merge=lfs -text
31
+ *.zip filter=lfs diff=lfs merge=lfs -text
32
+ *.zst filter=lfs diff=lfs merge=lfs -text
33
+ *tfevents* filter=lfs diff=lfs merge=lfs -text
README.md ADDED
@@ -0,0 +1,14 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ ---
2
+ title: Dost.ai
3
+ emoji: 🦀
4
+ colorFrom: yellow
5
+ colorTo: yellow
6
+ sdk: gradio
7
+ sdk_version: 3.6
8
+ app_file: app.py
9
+ pinned: false
10
+ license: unknown
11
+ duplicated_from: Akmyradov/dost.ai
12
+ ---
13
+
14
+ Check out the configuration reference at https://huggingface.co/docs/hub/spaces-config-reference
app.py ADDED
@@ -0,0 +1,83 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import os
2
+ import gradio as gr
3
+ import whisper
4
+ import openai
5
+ import tempfile
6
+ from neon_tts_plugin_coqui import CoquiTTS
7
+
8
+ model = whisper.load_model("small")
9
+
10
+ class Dost:
11
+ LANGUAGES = list(CoquiTTS.langs.keys())
12
+ coquiTTS = CoquiTTS()
13
+ OPENAI_API_KEY = os.environ["OPENAI_API_KEY"]
14
+ def __init__(self):
15
+ self.convHistory = []
16
+ self.voice = None
17
+ self.result = []
18
+
19
+ def recognize(self, audio):
20
+ audio = whisper.load_audio(audio)
21
+ audio = whisper.pad_or_trim(audio)
22
+
23
+ mel = whisper.log_mel_spectrogram(audio).to(model.device)
24
+
25
+ _, probs = model.detect_language(mel)
26
+ lang = max(probs, key=probs.get)
27
+
28
+ options = whisper.DecodingOptions(fp16 = False)
29
+ result = whisper.decode(model, mel, options)
30
+
31
+ print("-------------------RECOGNIZE---------------------")
32
+ print(result)
33
+ self.response(result.text, lang)
34
+
35
+ def response(self, prompt, lang):
36
+ response = openai.Completion.create(
37
+ model="text-davinci-002",
38
+ prompt=f"You: {prompt}Friend: ",
39
+ temperature=0.5,
40
+ max_tokens=60,
41
+ top_p=1.0,
42
+ frequency_penalty=0.5,
43
+ presence_penalty=0.0,
44
+ stop=["You:"]
45
+ )
46
+ choice = response['choices'][0]['text']
47
+ print("-------------------RESPONSE---------------------")
48
+ print(choice)
49
+ self.convHistory.append((prompt, choice))
50
+ self.result.append(self.convHistory)
51
+ print(self.convHistory[0])
52
+ print(type(self.convHistory[0]))
53
+ self.say(choice, lang)
54
+
55
+ def say(self, text, language):
56
+ coqui_langs = ['en' ,'es' ,'fr' ,'de' ,'pl' ,'uk' ,'ro' ,'hu' ,'bg' ,'nl' ,'fi' ,'sl' ,'lv' ,'ga']
57
+ if language not in coqui_langs:
58
+ language = 'en'
59
+ with tempfile.NamedTemporaryFile(suffix=".wav", delete=False) as fp:
60
+ self.coquiTTS.get_tts(text, fp, speaker = {"language" : language})
61
+ print("-------------------AUDIOOUTPUT---------------------")
62
+ print("DONE", fp.name)
63
+ self.result.append(fp.name)
64
+
65
+ def start(self, audio, state):
66
+ self.convHistory = state
67
+ self.result = []
68
+ self.recognize(audio)
69
+ print(self.result)
70
+ return tuple(self.result)
71
+
72
+ dost = Dost()
73
+ with gr.Blocks() as demo:
74
+ state = gr.State([])
75
+ with gr.Row():
76
+ with gr.Column():
77
+ input_audio = gr.Audio(source="microphone", type="filepath")
78
+ btn = gr.Button("Submit")
79
+ conversation = gr.Chatbot(value=dost.convHistory)
80
+ output_audio = gr.Audio(label="AI voice response")
81
+ btn.click(dost.start, inputs=[input_audio, state], outputs=[conversation, output_audio])
82
+
83
+ demo.launch(debug=True)
packages.txt ADDED
@@ -0,0 +1 @@
 
 
1
+ espeak-ng
requirements.txt ADDED
@@ -0,0 +1,8 @@
 
 
 
 
 
 
 
 
 
1
+ git+https://github.com/openai/whisper.git
2
+ openai
3
+ neon-tts-plugin-coqui
4
+ whisper
5
+ torch
6
+ transformers
7
+ jiwer
8
+ tts