import streamlit as st import sounddevice as sd import numpy as np import wave import io from scipy.io.wavfile import write # Функция для записи аудио def record_audio(duration, samplerate=44100): st.write("🎙️ Идёт запись...") audio_data = sd.rec(int(duration * samplerate), samplerate=samplerate, channels=2, dtype='int16') sd.wait() # Ждём завершения записи st.write("✅ Запись завершена!") return audio_data # Функция для сохранения аудио в WAV файл def save_audio_to_wav(audio_data, samplerate=44100): # Создаём поток в памяти wav_io = io.BytesIO() write(wav_io, samplerate, audio_data) # Сохраняем в поток wav_io.seek(0) # Возвращаем курсор в начало return wav_io # Интерфейс Streamlit st.title("🎙️ Простой диктофон") st.write("Этот диктофон позволяет записывать аудио и сохранять его на вашем устройстве.") # Ползунок для выбора длины записи duration = st.slider("Длительность записи (секунды)", min_value=1, max_value=60, value=5) # Переменная для хранения записи if "audio_data" not in st.session_state: st.session_state.audio_data = None # Кнопка для начала записи if st.button("Начать запись"): audio_data = record_audio(duration) st.session_state.audio_data = audio_data # Сохраняем запись в сессии # Проверяем, есть ли записанные данные if st.session_state.audio_data is not None: # Преобразуем запись в WAV и отображаем аудиоплеер audio_wav = save_audio_to_wav(st.session_state.audio_data) st.audio(audio_wav, format="audio/wav") # Кнопка для сохранения файла st.download_button( label="Сохранить запись", data=audio_wav, file_name="recorded_audio.wav", mime="audio/wav" )