Как обнаружить наличие входного аудио и выполнить действие, когда оно существует? - PullRequest
0 голосов
/ 11 января 2020

Я проверил pyaudio , но он дает возможность записывать ввод и манипулировать им, я просто хочу сделать действие, когда аудиовход существует.

1 Ответ

0 голосов
/ 13 января 2020

Вы можете реализовать простое обнаружение входного звука, используя PyAudio. Вам просто нужно решить, что вы имеете в виду под существованием звука.

В следующем примере кода я использовал простой root среднеквадратичный расчет с пороговым значением. Другой вариант - пиковый тест, просто сравнивающий амплитуду каждого аудиосэмпла с пороговым значением амплитуды пика. Что наиболее полезно для вас, зависит от приложения.

Вы можете поиграться с пороговым значением (т. Е. Минимальной амплитудой или громкостью звука) и размером порции (т. Е. Задержкой обнаружения звука), чтобы получить поведение, которое вы хотите.

import pyaudio
import math

RATE = 44100
CHUNK = 1024
AUDIO_EXISTENCE_THRESHOLD = 1000

def detect_input_audio(data, threshold):
    if not data:
        return False
    rms = math.sqrt(sum([x**2 for x in data]) / len(data))
    if rms > threshold:
        return True
    return False

audio = pyaudio.PyAudio()
stream = audio.open(format=pyaudio.paInt16, channels=1, input=True,
                    rate=RATE, frames_per_buffer=CHUNK)

data = []
while detect_input_audio(data, AUDIO_EXISTENCE_THRESHOLD):
    data = stream.read(CHUNK)

# Do something when input audio exists
# ...

stream.stop_stream()
stream.close()
audio.terminate()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...