本文目錄一覽:
- 1、python 怎麼錄製系統聲音不只是麥克風聲音
- 2、python3.0怎樣讀取另一台電腦的系統聲音,並在本機上報警提示?
- 3、PYTHON語言如何取到聲音的頻率(其他語言也可行)
- 4、如何調用python語言中的winsound模塊靜態常量
- 5、python實時獲取麥克風輸入音量?
python 怎麼錄製系統聲音不只是麥克風聲音
#我可以幫你寫一段代碼,能夠錄音形成wav文件,不過要分析錄音文件的波形,你可以另外找#工具,比如cooledit,也很方便。
from sys import byteorder
from array import array
from struct import pack
import pyaudio
import wave
THRESHOLD = 500
CHUNK_SIZE = 1024
FORMAT = pyaudio.paInt16
RATE = 44100
def is_silent(snd_data):
“Returns ‘True’ if below the ‘silent’ threshold”
return max(snd_data) THRESHOLD
def normalize(snd_data):
“Average the volume out”
MAXIMUM = 16384
times = float(MAXIMUM)/max(abs(i) for i in snd_data)
r = array(‘h’)
for i in snd_data:
r.append(int(i*times))
return r
def trim(snd_data):
“Trim the blank spots at the start and end”
def _trim(snd_data):
snd_started = False
r = array(‘h’)
for i in snd_data:
if not snd_started and abs(i)THRESHOLD:
snd_started = True
r.append(i)
elif snd_started:
r.append(i)
return r
# Trim to the left
snd_data = _trim(snd_data)
# Trim to the right
snd_data.reverse()
snd_data = _trim(snd_data)
snd_data.reverse()
return snd_data
def add_silence(snd_data, seconds):
“Add silence to the start and end of ‘snd_data’ of length ‘seconds’ (float)”
r = array(‘h’, [0 for i in xrange(int(seconds*RATE))])
r.extend(snd_data)
r.extend([0 for i in xrange(int(seconds*RATE))])
return r
def record():
“””
Record a word or words from the microphone and
return the data as an array of signed shorts.
Normalizes the audio, trims silence from the
start and end, and pads with 0.5 seconds of
blank sound to make sure VLC et al can play
it without getting chopped off.
“””
p = pyaudio.PyAudio()
stream = p.open(format=FORMAT, channels=1, rate=RATE,
input=True, output=True,
frames_per_buffer=CHUNK_SIZE)
num_silent = 0
snd_started = False
r = array(‘h’)
while 1:
# little endian, signed short
snd_data = array(‘h’, stream.read(CHUNK_SIZE))
if byteorder == ‘big’:
snd_data.byteswap()
r.extend(snd_data)
silent = is_silent(snd_data)
if silent and snd_started:
num_silent += 1
elif not silent and not snd_started:
snd_started = True
if snd_started and num_silent 30:
break
sample_width = p.get_sample_size(FORMAT)
stream.stop_stream()
stream.close()
p.terminate()
r = normalize(r)
r = trim(r)
r = add_silence(r, 0.5)
return sample_width, r
def record_to_file(path):
“Records from the microphone and outputs the resulting data to ‘path'”
sample_width, data = record()
data = pack(” + (‘h’*len(data)), *data)
wf = wave.open(path, ‘wb’)
wf.setnchannels(1)
wf.setsampwidth(sample_width)
wf.setframerate(RATE)
wf.writeframes(data)
wf.close()
if __name__ == ‘__main__’:
print(“please speak a word into the microphone”)
record_to_file(‘demo.wav’)
print(“done – result written to demo.wav”)
python3.0怎樣讀取另一台電腦的系統聲音,並在本機上報警提示?
python版本切換全局版本切換:pyenv global anaconda-2.4.0全局切換為anaconda科學計算環境,因為,我現在也不做其他python開發,所以,無需再安裝其他環境了。查看現在的python版本:michael@michael-ThinkCentre-XXXX:~$ pyenv versionssystem2.7.13.4.1* anaconda-2.4.0 (set by /home/michael/.pyenv/version)有全局版本切換,當然也會有局部環境的切換:在test文件夾下希望切換到python3.4.1:pyenv local python3.4.1
PYTHON語言如何取到聲音的頻率(其他語言也可行)
先得到時域信號,然後做傅立葉變換,得到頻譜。
感覺題主可能對python比較熟悉?那就別換語言了。稍微百度谷歌以下肯定能找到python的傅立葉變換的庫。
如何調用python語言中的winsound模塊靜態常量
第一步,顯示wav文件名稱,利用
winsound.SND_FILENAME
如下圖所示:
第二步,顯示從註冊表的聲音名稱,利用
winsound.SND_ALIAS
如下圖所示:
第三步,如果要使聲音重複播放,利用
winsound.SND_LOOP
如下圖所示:
第四步,從記憶圖片的wav文件播放聲音,利用
winsound.SND_MEMORY
如下圖所示:
第五步,停止所有具體聲音實例,利用
winsound.SND_PURGE
如下圖所示:
第六步,立刻返回到上次,准許聲音非同步播放,如下圖所示:
python實時獲取麥克風輸入音量?
import sounddevice as sd
import numpy as np
duration = 10 # 延遲(單位秒)
def print_sound(indata, outdata, frames, time, status):
volume_norm = np.linalg.norm(indata)*10
print “|” * int(volume_norm)
with sd.Stream(callback=print_sound):
sd.sleep(duration * 1000)
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/187601.html