Update app.py
Browse files
app.py
CHANGED
@@ -2,33 +2,51 @@ import streamlit as st
|
|
2 |
import sounddevice as sd
|
3 |
import numpy as np
|
4 |
import wave
|
|
|
5 |
from scipy.io.wavfile import write
|
6 |
|
7 |
# Функция для записи аудио
|
8 |
def record_audio(duration, samplerate=44100):
|
9 |
-
st.write("🎙️
|
10 |
audio_data = sd.rec(int(duration * samplerate), samplerate=samplerate, channels=2, dtype='int16')
|
11 |
-
sd.wait() #
|
12 |
st.write("✅ Запись завершена!")
|
13 |
return audio_data
|
14 |
|
15 |
# Функция для сохранения аудио в WAV файл
|
16 |
-
def
|
17 |
-
|
18 |
-
|
|
|
|
|
|
|
19 |
|
20 |
# Интерфейс Streamlit
|
21 |
st.title("🎙️ Простой диктофон")
|
22 |
st.write("Этот диктофон позволяет записывать аудио и сохранять его на вашем устройстве.")
|
23 |
|
24 |
# Ползунок для выбора длины записи
|
25 |
-
duration = st.slider("Длительность записи (секунды)", min_value=1, max_value=
|
|
|
|
|
|
|
|
|
26 |
|
27 |
# Кнопка для начала записи
|
28 |
if st.button("Начать запись"):
|
29 |
audio_data = record_audio(duration)
|
30 |
-
|
31 |
-
|
32 |
-
|
33 |
-
|
34 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2 |
import sounddevice as sd
|
3 |
import numpy as np
|
4 |
import wave
|
5 |
+
import io
|
6 |
from scipy.io.wavfile import write
|
7 |
|
8 |
# Функция для записи аудио
|
9 |
def record_audio(duration, samplerate=44100):
|
10 |
+
st.write("🎙️ Идёт запись...")
|
11 |
audio_data = sd.rec(int(duration * samplerate), samplerate=samplerate, channels=2, dtype='int16')
|
12 |
+
sd.wait() # Ждём завершения записи
|
13 |
st.write("✅ Запись завершена!")
|
14 |
return audio_data
|
15 |
|
16 |
# Функция для сохранения аудио в WAV файл
|
17 |
+
def save_audio_to_wav(audio_data, samplerate=44100):
|
18 |
+
# Создаём поток в памяти
|
19 |
+
wav_io = io.BytesIO()
|
20 |
+
write(wav_io, samplerate, audio_data) # Сохраняем в поток
|
21 |
+
wav_io.seek(0) # Возвращаем курсор в начало
|
22 |
+
return wav_io
|
23 |
|
24 |
# Интерфейс Streamlit
|
25 |
st.title("🎙️ Простой диктофон")
|
26 |
st.write("Этот диктофон позволяет записывать аудио и сохранять его на вашем устройстве.")
|
27 |
|
28 |
# Ползунок для выбора длины записи
|
29 |
+
duration = st.slider("Длительность записи (секунды)", min_value=1, max_value=60, value=5)
|
30 |
+
|
31 |
+
# Переменная для хранения записи
|
32 |
+
if "audio_data" not in st.session_state:
|
33 |
+
st.session_state.audio_data = None
|
34 |
|
35 |
# Кнопка для начала записи
|
36 |
if st.button("Начать запись"):
|
37 |
audio_data = record_audio(duration)
|
38 |
+
st.session_state.audio_data = audio_data # Сохраняем запись в сессии
|
39 |
+
|
40 |
+
# Проверяем, есть ли записанные данные
|
41 |
+
if st.session_state.audio_data is not None:
|
42 |
+
# Преобразуем запись в WAV и отображаем аудиоплеер
|
43 |
+
audio_wav = save_audio_to_wav(st.session_state.audio_data)
|
44 |
+
st.audio(audio_wav, format="audio/wav")
|
45 |
+
|
46 |
+
# Кнопка для сохранения файла
|
47 |
+
st.download_button(
|
48 |
+
label="Сохранить запись",
|
49 |
+
data=audio_wav,
|
50 |
+
file_name="recorded_audio.wav",
|
51 |
+
mime="audio/wav"
|
52 |
+
)
|