ihsan66 commited on
Commit
259780b
1 Parent(s): d5d6be1

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +15 -49
app.py CHANGED
@@ -6,7 +6,8 @@ import io
6
  import torch
7
  import torchaudio
8
  import librosa
9
- from transformers import Wav2Vec2ForCTC, Wav2Vec2FeatureExtractor
 
10
  st.set_page_config(layout="wide")
11
 
12
  # Örnek metin listesi
@@ -35,10 +36,6 @@ st.sidebar.write("")
35
 
36
  if model_checkpoint == "akdeniz27/xlm-roberta-base-turkish-ner":
37
  aggregation = "simple"
38
- elif model_checkpoint in ["xlm-roberta-large-finetuned-conll03-english", "asahi417/tner-xlm-roberta-base-ontonotes5"]:
39
- aggregation = "simple"
40
- st.sidebar.write("")
41
- st.sidebar.write("The selected NER model is included just to show the zero-shot transfer learning capability of XLM-Roberta pretrained language model.")
42
  else:
43
  aggregation = "first"
44
 
@@ -47,24 +44,19 @@ st.subheader("Metin Giriş Yöntemi Seç")
47
  input_method = st.radio("", ('Örneklerden Seç', 'Metin Yaz veya Yapıştır', 'Dosya Yükle', 'Ses Dosyası Yükle'))
48
 
49
  if input_method == 'Örneklerden Seç':
50
- selected_text = st.selectbox('Metin Seç', example_list, index=0, key=1)
51
- st.subheader("Seçilen Metin")
52
- input_text = st.text_area("Metin", selected_text, height=128, max_chars=None, key=2)
53
  elif input_method == "Metin Yaz veya Yapıştır":
54
- st.subheader("Metin")
55
- input_text = st.text_area('Metin Yaz veya Yapıştır', value="", height=128, max_chars=None, key=2)
56
  elif input_method == "Dosya Yükle":
57
- st.subheader("Metin")
58
  uploaded_file = st.file_uploader("Dosya Seç", type="txt")
59
  if uploaded_file is not None:
60
  input_text = str(uploaded_file.read(), "utf-8")
61
  else:
62
  input_text = ""
63
  elif input_method == "Ses Dosyası Yükle":
64
- st.subheader("Ses Dosyası")
65
- uploaded_audio = st.file_uploader("Ses Dosyasını Seç", type=["wav"])
66
- if uploaded_audio is not None:
67
- audio_bytes = uploaded_audio.read()
68
 
69
  @st.cache_resource
70
  def load_pipeline(model_name, task_type):
@@ -110,56 +102,33 @@ def entity_comb(output):
110
  output_comb.append(entity)
111
  return output_comb
112
 
113
-
114
-
115
-
116
  # Ses dosyasını metne çevirme fonksiyonu
117
  def transcribe_audio(audio_file):
118
- # Wav2Vec2 model ve processor yükleme
119
  processor = Wav2Vec2Processor.from_pretrained("facebook/wav2vec2-large-xlsr-53")
120
  model = Wav2Vec2ForCTC.from_pretrained("facebook/wav2vec2-large-xlsr-53")
121
 
122
- # Ses dosyasını yükleme
123
- audio_input = io.BytesIO(audio_file.read())
124
-
125
- # Torchaudio ile ses dosyasını okuma
126
  waveform, sample_rate = torchaudio.load(audio_input, normalize=True)
127
 
128
- # Ses verisini işleme
129
  inputs = processor(waveform.squeeze().numpy(), sampling_rate=sample_rate, return_tensors="pt", padding="longest")
130
 
131
- # Model ile tahmin yapma
132
  with torch.no_grad():
133
  logits = model(inputs.input_values).logits
134
 
135
- # Tahmin sonuçlarını çözme
136
  predicted_ids = torch.argmax(logits, dim=-1)
137
  transcription = processor.batch_decode(predicted_ids)[0]
138
 
139
  return transcription
140
-
141
- Run_Button = st.button("Çalıştır", key=None)
142
- # Metin giriş yöntemi
143
- st.subheader("Metin Giriş Yöntemi Seç")
144
- input_method = st.radio("", ('Metin Yaz veya Yapıştır', 'Ses Dosyası Yükle'), key="input_method_radio")
145
-
146
- if input_method == "Metin Yaz veya Yapıştır":
147
- st.subheader("Metin Girişi")
148
- input_text = st.text_area("Metni buraya yazın veya yapıştırın:", key="text_input_area")
149
-
150
- if input_text != "":
151
- st.subheader("Girdiğiniz Metin")
152
- st.write(input_text)
153
 
154
- elif input_method == "Ses Dosyası Yükle":
155
- st.subheader("Ses Dosyası")
156
- uploaded_audio = st.file_uploader("Ses Dosyasını Seç", type=["wav"], key="audio_file_uploader")
157
-
158
- if uploaded_audio is not None:
159
  transcription = transcribe_audio(uploaded_audio)
160
  st.subheader("Ses Transkripsiyonu")
161
  st.write(transcription)
162
- elif input_text != "":
 
 
163
  if task == "Metin Sınıflandırma":
164
  pipeline_model = load_pipeline(model_checkpoint, task)
165
  output = pipeline_model(input_text)
@@ -185,10 +154,7 @@ elif input_method == "Ses Dosyası Yükle":
185
  st.dataframe(df_final)
186
 
187
  st.subheader("Spacy Tarzı Görselleştirme")
188
- spacy_display = {}
189
- spacy_display["ents"] = []
190
- spacy_display["text"] = input_text
191
- spacy_display["title"] = None
192
 
193
  for entity in output_comb:
194
  spacy_display["ents"].append({"start": entity["start"], "end": entity["end"], "label": entity["entity_group"]})
 
6
  import torch
7
  import torchaudio
8
  import librosa
9
+ from transformers import Wav2Vec2ForCTC, Wav2Vec2Processor
10
+
11
  st.set_page_config(layout="wide")
12
 
13
  # Örnek metin listesi
 
36
 
37
  if model_checkpoint == "akdeniz27/xlm-roberta-base-turkish-ner":
38
  aggregation = "simple"
 
 
 
 
39
  else:
40
  aggregation = "first"
41
 
 
44
  input_method = st.radio("", ('Örneklerden Seç', 'Metin Yaz veya Yapıştır', 'Dosya Yükle', 'Ses Dosyası Yükle'))
45
 
46
  if input_method == 'Örneklerden Seç':
47
+ selected_text = st.selectbox('Metin Seç', example_list, index=0, key="example_selectbox")
48
+ input_text = st.text_area("Metin", selected_text, height=128, key="text_area")
 
49
  elif input_method == "Metin Yaz veya Yapıştır":
50
+ input_text = st.text_area('Metin Yaz veya Yapıştır', value="", height=128, key="text_area")
 
51
  elif input_method == "Dosya Yükle":
 
52
  uploaded_file = st.file_uploader("Dosya Seç", type="txt")
53
  if uploaded_file is not None:
54
  input_text = str(uploaded_file.read(), "utf-8")
55
  else:
56
  input_text = ""
57
  elif input_method == "Ses Dosyası Yükle":
58
+ uploaded_audio = st.file_uploader("Ses Dosyasını Seç", type=["wav"], key="audio_file_uploader")
59
+ audio_bytes = uploaded_audio.read() if uploaded_audio is not None else None
 
 
60
 
61
  @st.cache_resource
62
  def load_pipeline(model_name, task_type):
 
102
  output_comb.append(entity)
103
  return output_comb
104
 
 
 
 
105
  # Ses dosyasını metne çevirme fonksiyonu
106
  def transcribe_audio(audio_file):
 
107
  processor = Wav2Vec2Processor.from_pretrained("facebook/wav2vec2-large-xlsr-53")
108
  model = Wav2Vec2ForCTC.from_pretrained("facebook/wav2vec2-large-xlsr-53")
109
 
110
+ audio_input = io.BytesIO(audio_file)
 
 
 
111
  waveform, sample_rate = torchaudio.load(audio_input, normalize=True)
112
 
 
113
  inputs = processor(waveform.squeeze().numpy(), sampling_rate=sample_rate, return_tensors="pt", padding="longest")
114
 
 
115
  with torch.no_grad():
116
  logits = model(inputs.input_values).logits
117
 
 
118
  predicted_ids = torch.argmax(logits, dim=-1)
119
  transcription = processor.batch_decode(predicted_ids)[0]
120
 
121
  return transcription
 
 
 
 
 
 
 
 
 
 
 
 
 
122
 
123
+ # Çalıştır butonu
124
+ if st.button("Çalıştır"):
125
+ if input_method == "Ses Dosyası Yükle" and uploaded_audio is not None:
 
 
126
  transcription = transcribe_audio(uploaded_audio)
127
  st.subheader("Ses Transkripsiyonu")
128
  st.write(transcription)
129
+ elif input_method in ["Metin Yaz veya Yapıştır", "Örneklerden Seç", "Dosya Yükle"] and input_text:
130
+ task = st.sidebar.radio("Görev Seçin", ['Metin Sınıflandırma', 'Metin Analizi', 'Duygu Analizi', 'Metin Oluşturma'])
131
+
132
  if task == "Metin Sınıflandırma":
133
  pipeline_model = load_pipeline(model_checkpoint, task)
134
  output = pipeline_model(input_text)
 
154
  st.dataframe(df_final)
155
 
156
  st.subheader("Spacy Tarzı Görselleştirme")
157
+ spacy_display = {"ents": [], "text": input_text, "title": None}
 
 
 
158
 
159
  for entity in output_comb:
160
  spacy_display["ents"].append({"start": entity["start"], "end": entity["end"], "label": entity["entity_group"]})