Я пытаюсь записать звук с микрофонного модуля MAX4466 подключённого к RP2040-zero в аудиофайл.
Вот код, который я использовал.
import pyaudio
from array import array
import wave
import struct
import math
import array
GPIO_PIN = 27
CHUNK = 1024 # Размер буфера в байтах
FORMAT = pyaudio.paInt16 # Формат аудиоданных
CHANNELS = 1 # Количество каналов
RATE = 44100 # Частота дискретизации
RECORD_SECONDS = 5 # Время записи в секундах
WAVE_FILENAME = 'output.wav' # Имя аудиофайла
def initialize_recording(RATE, CHUNK, GPIO_PIN):
p = pyaudio.PyAudio() # Инициализация аудиоустройства
# Открытие аудиопотока для записи с указанными параметрами
stream = p.open(format=FORMAT, channels=CHANNELS, rate=RATE, input_device_index=GPIO_PIN, frames_per_buffer=CHUNK)
return stream
def write_audio_to_file(stream, filename):
array_of_audio_data = read_audio_data(stream) # Чтение аудиоданных из аудиопотока в массив
output_file = wave.open(filename, 'wb')
output_file.setnchannels(1)
output_file.setsampwidth(p.get_sample_size(FORMAT))
output_file.setframerate(RATE)
output_file.writeframes(b''.join(array_of_audio_data))
output_file.close()
def read_audio_data(stream):
audio_data = array.array('h')
for _ in range(int(math.ceil(RATE / float(RECORD_SECONDS)) * RECORD_SECONDS / CHUNK)):
data = stream.read(CHUNK)
audio_data.extend(array.array('h', data))
return audio_data
def main():
GPIO_PIN = 27
CHUNK = 1024 # Размер буфера в байтах
FORMAT = pyaudio.paInt16 # Формат аудиоданных
CHANNELS = 1 # Количество каналов
RATE = 44100 # Частота дискретизации
RECORD_SECONDS = 5 # Время записи в секундах
WAVE_FILENAME = 'output.wav' # Имя аудиофайла
write_audio_to_file(initialize_recording(RATE, CHUNK, GPIO_PIN), WAVE_FILENAME)
def __init__():
main()
class playRecord():
__init__()
Но мне выводит вот такую ошибку:
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "pyaudio/__init__.py", line 107, in <module>
File "locale.py", line 17, in <module>
File "_collections_abc.py", line 941
SyntaxError: invalid syntax
Я понимаю что там что то не так написано. Но ведь навряд ли делают специально библиотеки с ошибками.