기금넷 공식사이트 - 금 선물 - 급해요! ! ! ! Python 을 통해 간단한 녹음기를 만들고 8k 샘플링 및 16 비트 정량화 인코딩으로 자신의 목소리를 녹음하고 그 가치를 관찰하는 방법은 무엇입니까?

급해요! ! ! ! Python 을 통해 간단한 녹음기를 만들고 8k 샘플링 및 16 비트 정량화 인코딩으로 자신의 목소리를 녹음하고 그 가치를 관찰하는 방법은 무엇입니까?

# wav 파일을 녹음할 수 있는 코드를 쓸 수 있지만, 녹음된 파일의 파형을 분석하려면 cooledit 과 같은 또 다른 # 도구를 찾을 수 있습니다.

어디서 왔어요? 사이스? 수입? 바이트 순서

어디서 왔어요? 배열? 수입? 배열하다

어디서 왔어요? Struct? 수입? 포장

수입? Pyaudio

수입? 파도

문턱? =? 500

CHUNK_SIZE? =? 1024

형식? =? Pyaudio.paInt 16

속도? =? 44 100

Def? Is_silent(snd_data):

\ "반환? 정말? 만약? 아래? 저거요? 침묵? 임계값 "

반환? 최대 (snd _ data)? & lt? 임계값

Def? 정규화 (snd_data):

\ "일반? 저거요? 볼륨? 나가'

가장 큰? =? 16384

시대? =? 부동 (최대)/최대 (abs(i)? 뭐 때문에? 나? 네? Snd_data)

R? =? 배열 ("h")

뭐 때문에? 나? 네? Snd_data:

R.append(int(i*times))

반환? R

Def? 트림 (snd _ data):

\ "자르기? 저거요? 비어 있습니까? 반점? 어디 있어? 저거요? 시작? 그리고는요. 끝'

Def? _trim(snd_data):

Snd_started? =? 잘못된

R? =? 배열 ("h")

뭐 때문에? 나? 네? Snd_data:

만약? 그렇지 않나요? Snd_started? 그리고는요. Abs (I) > 임계값:

Snd_started? =? 진짜

R. 추가 (I)

엘리프? Snd_started:

R. 추가 (I)

반환? R

#? 트리밍? 어디 가? 저거요? 왼쪽

Snd_data? =? _trim(snd_data)

#? 트리밍? 어디 가? 저거요? 옳다

Snd_data.reverse ()

Snd_data? =? _trim(snd_data)

Snd_data.reverse ()

반환? Snd_data

Def? Add_silence(snd_data,? 초):

\ "보충? 침묵? 어디 가? 저거요? 시작? 그리고는요. 끝? 의? Snd_data'? 의? 길이? 초? (부동) "

R? =? 배열 ('h',? [0? 뭐 때문에? 나? 네? Xrange(int (초 * 속도)))

R.extend(snd_data)

R.extend([0? 뭐 때문에? 나? 네? Xrange(int (초 * 속도)))

반환? R

Def? 레코드 ():

"""

기록? 대답? 단어? 아니면? 문자? 어디서 왔어요? 저거요? 마이크? 그리고는요.

반환? 저거요? 데이터? 로? 앤? 배열? 의? 서명했어? 반바지.

정상화? 저거요? 오디오,? Trims? 침묵? 어디서 왔어요? 저거요?

시작? 그리고는요. 끝,? 그리고는요. 패드? 무엇을 사용합니까? 0.5? 초? 의?

비어 있습니까? 소리? 어디 가? 제조? 확실해? VLC? Et? 알. 괜찮으세요? 놀이?

그것? 아니요? 변하다? 잘게 다져? 꺼져 있습니다.

"""

P? =? 피오디오. PyAudio ()

시냇물? =? P.open (형식 = 형식,? 채널 = 1,? 비율 = 비율,

입력 = 참,? 출력 = 참,

프레임당 버퍼 = 블록 크기)

Num_silent? =? 0

Snd_started? =? 잘못된

R? =? 배열 ("h")

언제? 1:

#? 작은? 엔디안,? 서명했어? 짧은

Snd_data? =? 배열 ('h',? Stream.read(CHUNK_SIZE))

만약? Byteorder? = =? 큰':

Snd_data.byteswap ()

R.extend(snd_data)

침묵? =? Is_silent(snd_data)

만약? 침묵? 그리고는요. Snd_started:

Num_silent? +=? 1

엘리프? 그렇지 않나요? 침묵? 그리고는요. 그렇지 않나요? Snd_started:

Snd_started? =? 진짜

만약? Snd_started? 그리고는요. Num_silent? & gt? 30:

파열

Sample _ width? =? P.get_sample_size (형식)

Stream.stop_stream ()

Stream.close ()

P. 종료 ()

R? =? 정상화 (r)

R? =? 자르기 (r)

R? =? Add_silence(r, 0.5)

반환? 견본 폭? R

Def? 파일에 기록 (경로):

"기록? 어디서 왔어요? 저거요? 마이크? 그리고는요. 출력? 저거요? 결과는 어떨까요? 데이터? 어디 가? 경로''

견본 폭? 데이터? =? 레코드 ()

데이터? =? 패키지화 ('<'? +? ('h'*len(data)),? * 데이터)

Wf? =? Wave.open (경로,? WB')

Wf.setnchannels( 1)

Setsampwwidth(sample _ width)

Wf.setframerate (속도)

Wf.writeframes (데이터)

Wf.close ()

만약? __name__? = =? __main__':

인쇄 ("제발? 말? 대답? 단어? 로? 저거요? 마이크) 를 참조하십시오

파일 ('demo.wav') 에 기록

인쇄 ("완료? -응? 결과? 쓴 거야? 어디 가? Demo.wav ") 를 참조하십시오