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

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +25 -57
app.py CHANGED
@@ -1,66 +1,34 @@
1
  import streamlit as st
2
- import pyaudio
 
3
  import wave
4
- import os
5
- import tempfile
6
 
7
- # Настройки записи
8
- FORMAT = pyaudio.paInt16
9
- CHANNELS = 1
10
- RATE = 44100
11
- CHUNK = 1024
 
 
12
 
13
- # Инициализация PyAudio
14
- audio = pyaudio.PyAudio()
 
 
15
 
16
- # Создание интерфейса Streamlit
17
- st.title("Простой диктофон")
 
18
 
19
- # Ввод продолжительности записи
20
- record_seconds = st.number_input("Введите продолжительность записи (в секундах):", min_value=1, value=5)
21
 
22
  # Кнопка для начала записи
23
  if st.button("Начать запись"):
24
- # Открытие потока для записи
25
- stream = audio.open(format=FORMAT, channels=CHANNELS,
26
- rate=RATE, input=True,
27
- frames_per_buffer=CHUNK)
28
- st.write("Запись...")
29
- frames = []
30
-
31
- # Запись аудио
32
- for i in range(0, int(RATE / CHUNK * record_seconds)):
33
- data = stream.read(CHUNK)
34
- frames.append(data)
35
-
36
- st.write("Запись завершена.")
37
-
38
- # Остановка и закрытие потока
39
- stream.stop_stream()
40
- stream.close()
41
- audio.terminate()
42
-
43
- # Сохранение записанного аудио в файл
44
- with tempfile.NamedTemporaryFile(delete=False, suffix=".wav") as temp_audio:
45
- with wave.open(temp_audio.name, 'wb') as wf:
46
- wf.setnchannels(CHANNELS)
47
- wf.setsampwidth(audio.get_sample_size(FORMAT))
48
- wf.setframerate(RATE)
49
- wf.writeframes(b''.join(frames))
50
-
51
- st.write("Аудио сохранено.")
52
-
53
- # Загрузка аудиофайла
54
- with open(temp_audio.name, "rb") as f:
55
- audio_bytes = f.read()
56
- st.audio(audio_bytes, format='audio/wav')
57
-
58
- # Сохранение файла на сервер
59
- file_name = st.text_input("Введите имя файла для сохранения:", value="recorded_audio.wav")
60
- if st.button("Сохранить файл"):
61
- with open(file_name, "wb") as f:
62
- f.write(audio_bytes)
63
- st.write(f"Файл сохранен как {file_name}")
64
-
65
- # Удаление временного файла
66
- os.remove(temp_audio.name)
 
1
  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)