У меня есть pyaudio, который начинает запись при нажатии кнопки GPIO, а затем останавливает запись при повторном нажатии кнопки GPIO, по любой причине, по которой он добавляет звук в файл. Мне нужен новый файл с новым звуком, он может перезаписать выходной файл.wav.
Так, например, если я нажму кнопку, скажем 1234, нажмите кнопку, и он создаст выходной файл.wav, если я снова нажму кнопку и скажу 567, нажмите кнопку еще раз, чтобы остановить его, он не перезапишет выходной файл.wav с 567, он добавляет его к первой записи 1234, поэтому я получаю выходной файл.wav со звуком 1234, а затем В нем 567. Есть ли способ очистить буфер записи?
def record_audio():
draw.rectangle((0,0,disp.width,disp.height), outline=0, fill=0)
disp.LCD_ShowImage(image,0,0)
global frames, recording, enroll, WAVE_OUTPUT_FILENAME
recording = True
# Initialize PyAudio
audio = pyaudio.PyAudio()
# Open stream
stream = audio.open(format=FORMAT,
input_device_index=10,
channels=CHANNELS,
rate=RATE,
input=True,
frames_per_buffer=CHUNK)
print("Recording... Press Enter to stop.")
# Record loop
while recording:
data = stream.read(CHUNK, exception_on_overflow = False)
frames.append(data)
if disp.digital_read(disp.GPIO_KEY_PRESS_PIN ) == 1:
print("recording stopping")
recording = False
time.sleep(1)
print("Recording stopped.")
# Stop and close stream
stream.stop_stream()
stream.close()
audio.terminate()
# Save to file
with wave.open(WAVE_OUTPUT_FILENAME, 'wb') as wf:
wf.setnchannels(CHANNELS)
wf.setsampwidth(audio.get_sample_size(FORMAT))
wf.setframerate(RATE)
wf.writeframes(b''.join(frames))
print(f"Saved recording as {WAVE_OUTPUT_FILENAME}")
# Wait for Enter key
time.sleep(.5)
enroll = 4
main()
# Thread to handle recording
recording_thread = threading.Thread(target=record_audio)
recording_thread.start()
input() # Press Enter to stop
recording = False
recording_thread.join()
Подробнее здесь: https://stackoverflow.com/questions/798 ... -recording
Pyaudio добавляет аудио в WAV-файл из предыдущей записи ⇐ Python
Программы на Python
-
Anonymous
1761771239
Anonymous
У меня есть pyaudio, который начинает запись при нажатии кнопки GPIO, а затем останавливает запись при повторном нажатии кнопки GPIO, по любой причине, по которой он добавляет звук в файл. Мне нужен новый файл с новым звуком, он может перезаписать выходной файл.wav.
Так, например, если я нажму кнопку, скажем 1234, нажмите кнопку, и он создаст выходной файл.wav, если я снова нажму кнопку и скажу 567, нажмите кнопку еще раз, чтобы остановить его, он не перезапишет выходной файл.wav с 567, он добавляет его к первой записи 1234, поэтому я получаю выходной файл.wav со звуком 1234, а затем В нем 567. Есть ли способ очистить буфер записи?
def record_audio():
draw.rectangle((0,0,disp.width,disp.height), outline=0, fill=0)
disp.LCD_ShowImage(image,0,0)
global frames, recording, enroll, WAVE_OUTPUT_FILENAME
recording = True
# Initialize PyAudio
audio = pyaudio.PyAudio()
# Open stream
stream = audio.open(format=FORMAT,
input_device_index=10,
channels=CHANNELS,
rate=RATE,
input=True,
frames_per_buffer=CHUNK)
print("Recording... Press Enter to stop.")
# Record loop
while recording:
data = stream.read(CHUNK, exception_on_overflow = False)
frames.append(data)
if disp.digital_read(disp.GPIO_KEY_PRESS_PIN ) == 1:
print("recording stopping")
recording = False
time.sleep(1)
print("Recording stopped.")
# Stop and close stream
stream.stop_stream()
stream.close()
audio.terminate()
# Save to file
with wave.open(WAVE_OUTPUT_FILENAME, 'wb') as wf:
wf.setnchannels(CHANNELS)
wf.setsampwidth(audio.get_sample_size(FORMAT))
wf.setframerate(RATE)
wf.writeframes(b''.join(frames))
print(f"Saved recording as {WAVE_OUTPUT_FILENAME}")
# Wait for Enter key
time.sleep(.5)
enroll = 4
main()
# Thread to handle recording
recording_thread = threading.Thread(target=record_audio)
recording_thread.start()
input() # Press Enter to stop
recording = False
recording_thread.join()
Подробнее здесь: [url]https://stackoverflow.com/questions/79803371/pyaudio-appending-audio-to-wav-file-from-previous-recording[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия