Dmtlant commited on
Commit
fda39ae
1 Parent(s): 8531c03

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +29 -11
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 save_audio(filename, data, samplerate=44100):
17
- write(filename, samplerate, data)
18
- st.success(f"Аудио сохранено как {filename}")
 
 
 
19
 
20
  # Интерфейс Streamlit
21
  st.title("🎙️ Простой диктофон")
22
  st.write("Этот диктофон позволяет записывать аудио и сохранять его на вашем устройстве.")
23
 
24
  # Ползунок для выбора длины записи
25
- duration = st.slider("Длительность записи (секунды)", min_value=1, max_value=300, value=10)
 
 
 
 
26
 
27
  # Кнопка для начала записи
28
  if st.button("Начать запись"):
29
  audio_data = record_audio(duration)
30
-
31
- # Кнопка для сохранения записи
32
- st.audio(np.array(audio_data), format="audio/wav")
33
- if st.button("Сохранить запись"):
34
- save_audio("recorded_audio.wav", audio_data)
 
 
 
 
 
 
 
 
 
 
 
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
+ )