Обнаружьте и запишите аудио в Python

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

    ByteBuffer b= ByteBuffer.allocate(10); // capacity = 10, limit = 10
    b.limit(1);    //set limit to 1
    b.put((byte)1);
    b.put((byte)1); //causes java.nio.BufferOverflowException
90
задан SilentGhost 21 May 2009 в 10:23
поделиться

2 ответа

Я считаю, что модуль WAVE не поддерживает запись, а только обрабатывает существующие файлы. Вы можете посмотреть PyAudio для фактической записи. WAV - это самый простой в мире формат файлов. В paInt16 вы просто получаете целое число со знаком, представляющее уровень, и чем ближе к 0, тем тише. Я не могу вспомнить, являются ли файлы WAV первым или младшим байтом, но что-то вроде этого должно работать (извините, я на самом деле не программист на Python:

from array import array

# you'll probably want to experiment on threshold
# depends how noisy the signal
threshold = 10 
max_value = 0

as_ints = array('h', data)
max_value = max(as_ints)
if max_value > threshold:
    # not silence

Код PyAudio для записи сохранен для справки:

import pyaudio
import sys

chunk = 1024
FORMAT = pyaudio.paInt16
CHANNELS = 1
RATE = 44100
RECORD_SECONDS = 5

p = pyaudio.PyAudio()

stream = p.open(format=FORMAT,
                channels=CHANNELS, 
                rate=RATE, 
                input=True,
                output=True,
                frames_per_buffer=chunk)

print "* recording"
for i in range(0, 44100 / chunk * RECORD_SECONDS):
    data = stream.read(chunk)
    # check for silence here by comparing the level with 0 (or some threshold) for 
    # the contents of data.
    # then write data or not to a file

print "* done"

stream.stop_stream()
stream.close()
p.terminate()
44
ответ дан 24 November 2019 в 07:04
поделиться

Вы также можете посмотреть csounds . У него есть несколько API, включая Python. Он мог бы взаимодействовать с интерфейсом AD и собирать звуковые образцы.

0
ответ дан 24 November 2019 в 07:04
поделиться
Другие вопросы по тегам:

Похожие вопросы: