當前位置:外匯行情大全網 - 期貨行情 - 急!!!!如何通過python制作壹個簡單的錄音機,用8k采樣和16位量化編碼錄制自己的聲音,觀察其價值?

急!!!!如何通過python制作壹個簡單的錄音機,用8k采樣和16位量化編碼錄制自己的聲音,觀察其價值?

#我可以給妳寫壹段代碼,可以錄音形成wav文件,但是要分析錄音文件的波形,妳可以找另外壹個#工具,比如cooledit,也很方便。

從哪裏?sys?進口?字節序

從哪裏?數組?進口?排列

從哪裏?struct?進口?包裝

進口?pyaudio

進口?波浪

門檻?=?500

CHUNK_SIZE?=?1024

格式?=?pyaudio.paInt16

率?=?44100

def?is_silent(snd_data):

“回報?真的嗎?如果?下面?那個?沈默?閾值"

回歸?max(snd_data)?& lt?閾值

def?規格化(snd_data):

“壹般?那個?音量?出去"

最大?=?16384

時代?=?浮動(最大)/最大(abs(i)?為了什麽?我?在?snd_data)

r?=?數組(“h”)

為了什麽?我?在?snd_data:

r.append(int(i*times))

回歸?r

def?trim(snd_data):

“修剪?那個?空白?斑點?在哪裏?那個?開始?然後呢。結束"

def?_trim(snd_data):

snd_started?=?錯誤的

r?=?數組(“h”)

為了什麽?我?在?snd_data:

如果?不是嗎?snd_started?然後呢。ABS(I)& gt;閾值:

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。PyAudio()

溪流?=?p.open(format=FORMAT,?通道=1,?費率=費率,

輸入=真,?輸出=真,

幀每緩沖區=塊大小)

num_silent?=?0

snd_started?=?錯誤的

r?=?數組(“h”)

什麽時候?1:

#?小?endian,?簽了?短的

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:

破裂

樣本_寬度?=?p.get_sample_size(格式)

stream.stop_stream()

stream.close()

p .終止()

r?=?正常化(r)

r?=?修剪(r)

r?=?add_silence(r,0.5)

回歸?樣本寬度?r

def?記錄到文件(路徑):

“記錄?從哪裏?那個?麥克風?然後呢。輸出?那個?結果呢?數據?去哪?路徑'"

樣本寬度?數據?=?記錄()

數據?=?打包(' & lt'?+?(' h'*len(data)),?*數據)

wf?=?wave.open(路徑,?WB’)

wf.setnchannels(1)

setsampwwidth(sample _ width)

wf.setframerate(速率)

wf.writeframes(數據)

wf.close()

如果?__name__?==?__main__ ':

print("拜托?說話?答?詞?變成?那個?麥克風”)

記錄到文件(' demo.wav ')

打印(“完成?-?結果?寫的?去哪?demo.wav ")

  • 上一篇:國債期貨入門之中長期國債期貨定價方法有哪些
  • 下一篇:2109雞蛋期貨進入,9月散戶還可以買嗎?
  • copyright 2024外匯行情大全網