프로그래밍/Python

[Python] 마이크로 음성녹음하기

Beginner:) 2021. 7. 21.
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] 카카오 음성API STT (feat. postman)

카카오에서 제공하는 AI 관련해서 음성 API를 사용(REST API만 사용한다) 예상으로는 다른 기업들도 오픈소스나 그걸 인수한 데이터들을 베이스로 하기 때문에 비슷비슷할거라 생각. 아래 관련 링

park-duck.tistory.com

 

반응형

댓글