SMALL
먼저 마이크 기능 확인하기.
1. 마이크 인식 확인
명령어를 통해 연결된 mic를 확인할 수 있다.
$ arecord -l
card1의 device0로 인식된 것을 확인할 수 있다.
card0이면 상관없는데 1로 인식되어 있다면 alsa.conf 파일을 수정해주어야 한다.
sudo vi /usr/share/alsa/alsa.conf
card를 1로 수정.
그럼 녹음을 해보자.
$ arecord -D plughw:1,0 -d 5 test.wav
arecord 명령어로 녹음할 수 있고, -D는 device, -d는 초단위의 녹음할 시간, 마지막에 파일명을 적어준다.
device에는 plughw: 다음에 위에서 인식한 card1, device0의 1,0을 적어준다.
그러면 5초동안 녹음이 된다. 재생해서 녹음이 되었는지 확인. 잘되었다.
2. python으로 음성녹음 코드 구현
sudo apt-get install libasound-dev
sudo apt-get install python3-pyaudio
import pyaudio
import wave
def find_audio_index(audio):
for i in range(audio.get_device_count()):
info = audio.get_device_info_by_index(i)
print("DEVICE: %s INDEX: %s RATE: %s " %
(info["name"], i, info["defaultSampleRate"]))
def record(audio):
FORMAT = pyaudio.paInt16
CHANNELS = 1
RATE = 44100
CHUNK = 4096
RECORD_SECONDS = 5
WAVE_OUTPUT_FILENAME = "record_test.wav"
# start Recording
stream = audio.open(format=pyaudio.paInt16,
channels=CHANNELS,
rate=RATE,
input=True,
frames_per_buffer=CHUNK)
print("start recording")
frames = []
for i in range(0, int(RATE / CHUNK * RECORD_SECONDS)):
data = stream.read(CHUNK)
frames.append(data)
print("finished recording")
# stop Recording
stream.stop_stream()
stream.close()
audio.terminate()
waveFile = wave.open(WAVE_OUTPUT_FILENAME, 'wb')
waveFile.setnchannels(CHANNELS)
waveFile.setsampwidth(audio.get_sample_size(FORMAT))
waveFile.setframerate(RATE)
waveFile.writeframes(b''.join(frames))
waveFile.close()
aud = pyaudio.PyAudio()
find_audio_index(aud)
record(aud)
이렇게 구현하면 아래와 같이 출력이 된다.
에러가 발생하는것처럼 보이지만 녹음은 잘 된다.
5초동안 녹음하는 코드이고, sample rate 입력은 find_audio_index함수를 통해 audio info를 보고 알맞게 넣어주면 된다.
LIST
'개발Study > raspberry pi' 카테고리의 다른 글
Ubuntu core on raspberry pi (0) | 2020.09.18 |
---|
댓글