320x100
간단한 설명부터 하자면 (아래 소스코드 참고)
start() / stop()은 쓰레드를 돌리냐 마냐를 기준으로하는 함수이다.
버튼으로 제어하고 싶으면 이벤트로 start() / stop() 을 연결해주면 된다 .
complicated_record() / complacted_stop()은 실제로 마이크에서 데이터를 가져와 쓰는부분이다.
아래 코드는 실제 동작하는 코드이며 3초간 녹음을 하는 코드이다.
코드를 보면 들여쓰기..?(tab)이 제대로 안되있는 것 처럼 보이지만 ...
코드는 맞는데 글을 올리면 계속 이상하게 보인다...
복사가 이상하게 되더라도 참고하여 수정하자
import queue, os, threading
import sounddevice as sd
import soundfile as sf
from scipy.io.wavfile import write
q = queue.Queue()
recorder = False
recording = False
def complicated_record():
with sf.SoundFile("/home/pi/temp.wav", mode='w', samplerate=16000, subtype='PCM_16', channels=1) as file:
with sd.InputStream(samplerate=16000, dtype='int16', channels=1, callback=complicated_save):
while recording:
file.write(q.get())
def complicated_save(indata, frames, time, status):
q.put(indata.copy())
def start():
global recorder
global recording
recording = True
recorder = threading.Thread(target=complicated_record)
print('start recording')
recorder.start()
def stop():
global recorder
global recording
recording = False
recorder.join()
print('stop recording')
start()
time.sleep(3)
stop()
sf.SoundFile의 첫번째 매개변수는 file path이다.
윈도우에서 /home/pi 하면 당연히 돌아가지 않으니 본인의 경로를 적자.
마이크를 통한 STT 구현(카카오 API)
2021.07.05 - [프로그래밍] - [python] 카카오 음성API STT (feat. postman)
반응형
'프로그래밍 > Python' 카테고리의 다른 글
[Python] 라즈베리파이 Teachable Machine 사용하기 (0) | 2021.08.05 |
---|---|
[python] 카카오 음성API TTS (feat. Postman) (5) | 2021.07.21 |
[python]problem when handling top level response (0) | 2021.07.13 |
[python] 카카오 음성API STT (feat. postman) (0) | 2021.07.05 |
[Python]libportaudio.so.2 Error (0) | 2021.07.01 |
댓글