File size: 2,323 Bytes
ccabf63
d087b4c
 
 
 
97148d9
d087b4c
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
97148d9
 
d087b4c
 
 
 
97148d9
 
d087b4c
 
 
 
97148d9
d087b4c
 
 
 
 
 
 
 
 
 
 
 
 
 
97148d9
d087b4c
 
 
 
 
 
97148d9
d087b4c
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
import streamlit as st
import pyaudio
import wave
import os
import tempfile

# Настройки записи
FORMAT = pyaudio.paInt16
CHANNELS = 1
RATE = 44100
CHUNK = 1024

# Инициализация PyAudio
audio = pyaudio.PyAudio()

# Создание интерфейса Streamlit
st.title("Простой диктофон")

# Ввод продолжительности записи
record_seconds = st.number_input("Введите продолжительность записи (в секундах):", min_value=1, value=5)

# Кнопка для начала записи
if st.button("Начать запись"):
    # Открытие потока для записи
    stream = audio.open(format=FORMAT, channels=CHANNELS,
                        rate=RATE, input=True,
                        frames_per_buffer=CHUNK)
    st.write("Запись...")
    frames = []

    # Запись аудио
    for i in range(0, int(RATE / CHUNK * record_seconds)):
        data = stream.read(CHUNK)
        frames.append(data)

    st.write("Запись завершена.")

    # Остановка и закрытие потока
    stream.stop_stream()
    stream.close()
    audio.terminate()

    # Сохранение записанного аудио в файл
    with tempfile.NamedTemporaryFile(delete=False, suffix=".wav") as temp_audio:
        with wave.open(temp_audio.name, 'wb') as wf:
            wf.setnchannels(CHANNELS)
            wf.setsampwidth(audio.get_sample_size(FORMAT))
            wf.setframerate(RATE)
            wf.writeframes(b''.join(frames))

        st.write("Аудио сохранено.")

        # Загрузка аудиофайла
        with open(temp_audio.name, "rb") as f:
            audio_bytes = f.read()
            st.audio(audio_bytes, format='audio/wav')

        # Сохранение файла на сервер
        file_name = st.text_input("Введите имя файла для сохранения:", value="recorded_audio.wav")
        if st.button("Сохранить файл"):
            with open(file_name, "wb") as f:
                f.write(audio_bytes)
            st.write(f"Файл сохранен как {file_name}")

        # Удаление временного файла
        os.remove(temp_audio.name)