0 / 0 / 0
Регистрация: 02.05.2023
Сообщений: 3

Pyaudio - автоматически остановить запись, если диктор замолчал

30.11.2023, 13:53. Показов 492. Ответов 0
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Всем доброго времени суток.
Пытаюсь сделать голосового ассистента.
Как заставить pyaudio автоматически остановить запись звука, если диктор замолчал?

Сейчас так:
Python
1
2
3
record_seconds = 5
for i in range(int(44100 / chunk * record_seconds)):
    data = stream.read(chunk)
Добавлено через 8 минут
В идеале после 15 секунд завершать запись аварийно, а если уровень громкости упал ниже порогового, то выходить из цикла записи. Делал кто-нибудь такое на pyaudio?
У меня есть решение через speech_recognition, но я не хочу тащить его в проект только ради этого.

Добавлено через 2 часа 2 минуты
Нашёл такое решение, в принципе работает.
Проверяется постоянно уровень громкости, если он упал ниже порога больше 2-х секунд, то выход и запись в файл.
Python
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
    def listen(self):
        frames = []  # new
        start = -1
        while True:
            try:
                chunk = self.stream.read(INPUT_FRAMES_PER_BLOCK)
                frames.append(chunk)
            except Exception as e:
                pass
                return
            mx = audioop.max(chunk, 2)
            if mx > 2300:  # print the volume level whenever the volume is above 2300
                # print(mx)
                start = -1
 
            elif mx < 2300:  # If the volume is below 2300:
                if start < 0:  # INITIALIZE
                    start = time.time()
                else:
                    if time.time() - start >= 2:  # Wait two seconds
                        p = pyaudio.PyAudio()
                        # сохранить аудиофайл
                        # открываем файл в режиме 'запись байтов'
                        wf = wave.open(filename, "wb")
                        # установить каналы
                        wf.setnchannels(CHANNELS)
                        # установить формат образца
                        wf.setsampwidth(p.get_sample_size(FORMAT))
                        # установить частоту дискретизации
                        wf.setframerate(RATE)
                        # записываем кадры как байты
                        wf.writeframes(b"".join(frames))
                        # закрыть файл
                        wf.close()
                        break
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
30.11.2023, 13:53
Ответы с готовыми решениями:

PyAudio ERROR: PyAudio-0.2.11-cp27-cp27m-win32.whl is not a supported wheel on this platform
Хочу установить Pyaudio на винду 10. Устанавливаю файл через сайт https://www.lfd.uci.edu/~gohlke/pythonlibs/ и в консоли пишу pip...

Если запись в столбце существует, то ничего не делать, если запись отсутствует, то записать нужное значение. Как реализовать?
Если запись в столбце существует, то ничего не делать, если запись отсутствует, то записать нужное значение. Как реализовать?

Остановить запись в файл
программа хорошая и работает только никак не останавливается в смысле ввожу пробел (может не так как-то ввожу) а она требует еще...

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
30.11.2023, 13:53
Помогаю со студенческими работами здесь

Остановить while, если введено не число
Хочу сделать цикл while, такой, что когда пользователь вводит, например, пробел вместо числа, цикл останавливается. Как это можно сделать...

Как остановить функцию если
Есть функция, которая подставляет поддомен согласно выбранному городу и делает редирект на соответсвующую страницу function...

Экраннный диктор
при нажатии :pardon: кнопки спец. возм. на экране входа в вынь, вкл. экранный диктор!!!!!! о ужас - их никтоо не грузил !...

Как остановить запись аудиопотока в файл
Всем привет.Есть код записывающий аудиопоток. Dim Pu, D, Adr, R As String Dim th As System.Threading.Thread Private Sub...

Остановить таймер, если ClientSocket не активен
Приветствую всех нужна помошь как сделать условие пример такого IF ClientSocket1.active:=false then ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
Опции темы

Новые блоги и статьи
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru