Dmtlant commited on
Commit
23856b9
1 Parent(s): 50a3615

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +39 -16
app.py CHANGED
@@ -1,37 +1,60 @@
 
1
  import streamlit as st
2
  import speech_recognition as sr
3
 
4
- # Функция для записи и распознавания речи
5
- def record_and_recognize(language="en-US"):
 
 
 
 
 
 
 
6
  recognizer = sr.Recognizer()
7
 
8
- # Используем микрофон как источник
9
- with sr.Microphone() as source:
10
- st.write("🎙️ Говорите, запись началась...")
11
  try:
12
- # Захват аудио
13
- audio = recognizer.listen(source, timeout=5)
14
- st.write("✅ Запись завершена! Распознаем текст...")
15
-
16
- # Распознавание речи
17
  text = recognizer.recognize_google(audio, language=language)
18
  return text
19
-
20
  except sr.UnknownValueError:
21
  return "❌ Не удалось распознать речь. Попробуйте снова."
22
  except sr.RequestError as e:
23
  return f"❌ Ошибка сервиса распознавания речи: {e}"
24
 
 
25
  # Интерфейс Streamlit
26
- st.title("🎙️ Диктофон и Распознавание Речи")
27
- st.write("Это приложение позволяет записывать вашу речь и распознавать её на русском или английском языке.")
28
 
29
  # Выбор языка
30
  language = st.radio("Выберите язык для распознавания:", ("Русский", "Английский"))
31
  language_code = "ru-RU" if language == "Русский" else "en-US"
32
 
 
 
 
 
 
 
33
  # Кнопка для начала записи
34
  if st.button("Начать запись"):
35
- recognized_text = record_and_recognize(language=language_code)
36
- st.write("### Распознанный текст:")
37
- st.write(recognized_text)
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import os
2
  import streamlit as st
3
  import speech_recognition as sr
4
 
5
+
6
+ # Функция для записи звука с микрофона с использованием `arecord` (Linux)
7
+ def record_audio_linux(filename, duration=5):
8
+ command = f"arecord -d {duration} -f cd {filename}"
9
+ os.system(command) # Выполняем системную команду для записи
10
+
11
+
12
+ # Функция для распознавания речи
13
+ def recognize_speech_from_file(filename, language="en-US"):
14
  recognizer = sr.Recognizer()
15
 
16
+ # Открываем записанный файл
17
+ with sr.AudioFile(filename) as source:
18
+ audio = recognizer.record(source) # Читаем аудио из файла
19
  try:
20
+ # Распознаём речь
 
 
 
 
21
  text = recognizer.recognize_google(audio, language=language)
22
  return text
 
23
  except sr.UnknownValueError:
24
  return "❌ Не удалось распознать речь. Попробуйте снова."
25
  except sr.RequestError as e:
26
  return f"❌ Ошибка сервиса распознавания речи: {e}"
27
 
28
+
29
  # Интерфейс Streamlit
30
+ st.title("🎙️ Диктофон и распознавание речи (без PyAudio)")
31
+ st.write("Это приложение записывает вашу речь с помощью системных средств и распознаёт её (на русском или английском языке).")
32
 
33
  # Выбор языка
34
  language = st.radio("Выберите язык для распознавания:", ("Русский", "Английский"))
35
  language_code = "ru-RU" if language == "Русский" else "en-US"
36
 
37
+ # Длительность записи
38
+ duration = st.slider("Длительность записи (секунды):", 1, 10, 5)
39
+
40
+ # Имя временного файла
41
+ filename = "recorded_audio.wav"
42
+
43
  # Кнопка для начала записи
44
  if st.button("Начать запись"):
45
+ # Проверяем, поддерживается ли команда `arecord`
46
+ if os.system("which arecord") != 0:
47
+ st.error("Для записи звука требуется утилита 'arecord'. Установите её с помощью команды: sudo apt install alsa-utils")
48
+ else:
49
+ st.write("🎙️ Идёт запись...")
50
+ record_audio_linux(filename, duration)
51
+ st.write("✅ Запись завершена!")
52
+
53
+ # Распознаём речь
54
+ st.write("🔍 Распознаём текст...")
55
+ recognized_text = recognize_speech_from_file(filename, language=language_code)
56
+ st.write("### Распознанный текст:")
57
+ st.write(recognized_text)
58
+
59
+ # Показываем аудиоплеер
60
+ st.audio(filename, format="audio/wav")