import os import streamlit as st import speech_recognition as sr # Функция для записи звука с микрофона с использованием `arecord` (Linux) def record_audio_linux(filename, duration=5): command = f"arecord -d {duration} -f cd {filename}" os.system(command) # Выполняем системную команду для записи # Функция для распознавания речи def recognize_speech_from_file(filename, language="en-US"): recognizer = sr.Recognizer() # Открываем записанный файл with sr.AudioFile(filename) as source: audio = recognizer.record(source) # Читаем аудио из файла try: # Распознаём речь text = recognizer.recognize_google(audio, language=language) return text except sr.UnknownValueError: return "❌ Не удалось распознать речь. Попробуйте снова." except sr.RequestError as e: return f"❌ Ошибка сервиса распознавания речи: {e}" # Интерфейс Streamlit st.title("🎙️ Диктофон и распознавание речи (без PyAudio)") st.write("Это приложение записывает вашу речь с помощью системных средств и распознаёт её (на русском или английском языке).") # Выбор языка language = st.radio("Выберите язык для распознавания:", ("Русский", "Английский")) language_code = "ru-RU" if language == "Русский" else "en-US" # Длительность записи duration = st.slider("Длительность записи (секунды):", 1, 10, 5) # Имя временного файла filename = "recorded_audio.wav" # Кнопка для начала записи if st.button("Начать запись"): # Проверяем, поддерживается ли команда `arecord` if os.system("which arecord") != 0: st.error("Для записи звука требуется утилита 'arecord'. Установите её с помощью команды: sudo apt install alsa-utils") else: st.write("🎙️ Идёт запись...") record_audio_linux(filename, duration) st.write("✅ Запись завершена!") # Распознаём речь st.write("🔍 Распознаём текст...") recognized_text = recognize_speech_from_file(filename, language=language_code) st.write("### Распознанный текст:") st.write(recognized_text) # Показываем аудиоплеер st.audio(filename, format="audio/wav")