File size: 2,205 Bytes
1ffd672
f8d0565
 
ff1bae1
f8d0565
 
55c2b20
663ac44
 
 
 
 
 
 
fa6f9dd
5caf6ad
0f7a10e
663ac44
 
 
 
 
 
f8d0565
 
 
 
0c3b1db
f8d0565
 
 
0c3b1db
f8d0565
 
0c3b1db
f8d0565
 
 
 
1ffd672
 
f8d0565
0c3b1db
c198ba3
f8d0565
 
 
5d2138a
f9db145
f083023
 
 
 
f9db145
f083023
f9db145
f083023
 
 
 
 
 
 
 
 
 
f8d0565
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
import streamlit as st
import langcodes
from allosaurus.app import read_recognizer
from pathlib import Path

  
def get_path_to_wav_format(uploaded_file):
#  st.write(dir(uploaded_file))
#  st.write(type(uploaded_file))
#  st.write(uploaded_file)
  uploaded_bytes = uploaded_file.getvalue()
  actual_file_path = Path(uploaded_file.name)
  actual_file_path.write_bytes(uploaded_bytes)
    

  if ".wav" in uploaded_file.name:
    return Path(uploaded_file.name)
 if ".mp3" in uploaded_file.name:
   new_desired_path = actual_file_path.with_suffix(".wav")
   waveform, sample_rate = torchaudio.load(actual_file_path)
   st.info(waveform, sample_rate)
   torchaudio.save(new_desired_path, waveform, sample_rate)
   return new_desired_path


def get_langcode_for_allosaurus(input_code):
  langcode = "ipa" # the default allosaurus recognizer
  description = "the default universal setting, not specific to any language"
  try:
    lang = langcodes.get(input_code)
    langcode = lang.to_alpha3()
    description = lang.display_name()
  except langcodes.LanguageTagError as e:
    pass
  return langcode, description 
  
  
  


if __name__ == "__main__":
  input_code = st.text_input("(optional) 2 or 3-letter ISO code for input language", max_chars=3)
  langcode, description = get_langcode_for_allosaurus(input_code)
  st.write(f"Instructing Allosaurus to recognize using language {langcode}. That is, {description}")
  
  model = read_recognizer()
  
  uploaded_files = st.file_uploader("Choose a file", type=[
                                                          ".wav", 
#                                                          ".mp3", # TODO: convert .mp3 to .wav and save
                                                          ],
                                                    accept_multiple_files=True,
                                                          )
  
  for uploaded_file in uploaded_files:
    
    if uploaded_file is not None:
  
      
      
      st.audio(uploaded_file, format='audio/wav')
      
      wav_file = get_path_to_wav_format(uploaded_file)    
      st.write(wav_file)
      result = model.recognize(wav_file, langcode)
      st.write(result)