導航:首頁 > 編程語言 > python麥克風

python麥克風

發布時間:2023-03-03 05:16:34

python語音識別如何部署到移動應用

python語音識別源於 20 世紀 50 年代早期在貝爾實驗室所做的研究。早期語音識別系統僅能識別單個講話者以及只有約十幾個單詞的詞彙量。現代語音識別系統已經取得了很大進步,可以識別多個講話者,並且擁有識別多種語言的龐大詞彙表。
語音識別的首要部分當然是語音。通過麥克風,語音便從物理聲音被轉換為電信號,然後通過模數轉換器轉換為數據。一旦被數字化,就可適用若干種模型,將音頻轉錄為文本。
大多數現代語音識別系統都依賴於隱馬爾可夫模型(HMM)。其工作原理為:語音信號在非常短的時間尺度上(比如 10 毫秒)可被近似為靜止過程,即一個其統計特性不隨時間變化的過程。

Ⅱ Python 在編程語言中是什麼地位為什麼很多大學不教 Python

python的地位很高,目前是世界第5大編程語言。。但我覺得大學不教python,其實是正確的。
Python在誕生之初,只是用來在Linux上給Perl和shell做銜接用的「膠水」,而今天已經成為了主流的編程語言,能獲得今天的地位,當然具備諸多優勢。。。比如數學運算相關的各種庫,爬蟲,等等。。。但這都不是導致Python流行的最根本原因。
有沒有比Python運算更強的語言?多得是
有沒有比Python爬蟲效率更高的語言?也不少
所以其實平日里隨口道來的種種優勢,並不是不可替代的。。這些優勢,很多語言都具備。就比如perl,erlang,Julia等語言,其實用來做運算或爬蟲比Python更強,但為什麼這些語言卻流行不起來?
說到底,Python成功的秘訣只有一條,其實就是在功能基本夠用的前提下,比其他語言簡單。而比Python簡單的語言,功能又不夠全面,比如Lua,Javascript,Ruby這些語言比Python更簡單,但往往只適合一兩個領域的工作,而無法面面俱到。
Python可以提供的這些功能,對於非專業程序員來講,已經顯得非常強大了。。但對於專業程序員來說,Python最大的作用,其實也只是用來「偷懶」而已。因為相比JAVA或C#這種工業級的編程語言來講,Python除了入門簡單之外,並無任何優勢可言。而Python的動態語言特性、不利於維護等缺點,成為了限制它邁向深層開發的重大缺陷。
而如果熟練掌握JAVA或C#中的任何一門,想利用閑暇之餘學習一下Python,看幾個案例便可以入門,幾乎不需要專門學習。
如果你並不以成為專業程序員做為目標,那麼以Python為主,是可以的。但若想靠編程養家糊口,靜態語言才是重中之重。
但如果是計算機專業的話,僅僅學Python,似乎就有點對不起「科班出身」的稱號了。。。。學生們花著昂貴的學費,消耗四年光陰,卻只學個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")

Ⅳ Python語音識別,調用的是哪個客戶端介面函數

調用騰訊雲的語音識別(一句話識別)介面-Python版。
安裝語音識別,語音識別器編碼,處理Ubuntu伺服器,處理WSL。
要運行我們代碼的語音識別庫,我們首先需要安裝語音識別,然後還必須安裝PyAudio。首先,我們從主包開始:sudo pip3 install SpeechRecognition安裝應該遵循完全相同的格式,但我似乎缺少了讓它正常工作的軟體包,試圖安裝PyAudio會出錯。這些軟體包應該刪除該錯誤。那時我不需要更新apt,但先更新它並不壞處。sudo apt-get install libasound-dev portaudio19-dev libportaudio2libportaudiocpp0有了它,您應該可以安裝PyAudio:sudo pip3 install PyAudio語音識別器編碼。
運行WSL(Linux版Windows子系統)的Windows機器。它也使用了Ubuntu 16.04,所以安裝過程是一樣的。不過說到使用麥克風,WSL並不那麼簡單。為了通過Ubuntu終端應用程序控制麥克風,需要安裝PulseAudio。

Ⅳ Python用什麼模塊開發語音識別系統

推薦使用YQ5969,這個語音識別模塊可以支持1--8個咪頭,還可以支持本地和雲端識別不同需求。5米內本地識別率 93%以上,雲端識別率97%。這個語音識別模塊可以濾除雜訊。由於我們生活在一個相對的噪音環境里,
在遠場識別中,用戶和設備有一定距離,很多時候雜訊源距離麥克風的位置比人更近,在某種程度中也為錄制聲音帶來了一定的困難。

Ⅵ 用Python實現類似語音助手的功能有什麼好的思路及工具庫

有趣的話題,高級的思路等牛人來說。
我說一個笨思路,不斷的錄音片段,不斷的比對波形。
已答就不要重復邀請了哇。另外你想要持續匹配必然是不斷錄音不斷匹配,現實世界中並沒有如同推送服務一樣的功能,可以出現了什麼聲音再調用你的程序。你只能是看看如何設計優化這個匹配和錄音的平衡,並且優化你的匹配速度:比方說你試試錄音能否多進程(線程)?如果能雙開,那麼交替覆蓋空白時間也是其中一種演算法
你思考一下蘋果的語音助手(老版本)和安卓的語音助手,是不是都要先按一個按鈕才能開始語音助手服務?說明只有持續監聽才能解決問題,但是手機為了保證續航,又不能做持續監聽。
後來,蘋果想了個什麼辦法呢,他自己設計了一個晶元,其中有一個功能就是可以捕捉麥克風收聽到「hey siri」就調用語音助手的功能,具體的技術細節我不太清楚,有可能是讓麥克風只要收到超過多少分貝的聲音就開始小范圍匹配「hey siri」之類的吧
至於減噪,網上有不少關於用電腦軟體調節波形文件來降噪的方法教程,雖然你不能直接用,但是提供了思路
計算聲音的相似性,我個人認為可以通過計算波形的特徵來完成,我個人才疏學淺,沒有這方面的經驗,如果是語音識別,推薦你用訊飛的api試試,訊飛在這一塊技術還是蠻強的。
但是,像人類一樣可以很精準的從人群中識別出熟人聲音的功能,那個屬於人工智慧的范疇,目前研究水平還不夠到可以應用的地步。

Ⅶ python實時獲取麥克風輸入音量

import sounddevice as sd

import numpy as np
ration = 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(ration * 1000)

Ⅷ 如何優雅的用Python玩轉語音聊天機器人

所需硬體:
樹莓派B+
人體紅外線感應模塊
內置麥克風攝像頭(實測樹莓派免驅淘寶鏈接)
申請API:
網路語音api
圖靈api
語音聊天機器人實現原理:當有人來到跟前時--》觸發聊天功能,開始以每2s檢測錄制語音--》通過網路語音api合成文字--》傳遞給圖靈api返回回答信息--》通過網路語音合成播放
【人體感應識別部分Python代碼renti.py】


#/usr/bin/python#coding:utf-8import RPi.GPIO as GPIOimport timeimport osimport signalimport atexitGPIO.setmode(GPIO.BCM) GPIO_PIR = 14 GPIO.setup(GPIO_PIR,GPIO.IN) # Echojing = 0dong = 0 sum = 0sum1 = 0oldren = 0sleep = 0def ganying(): i = 0 ok = 0 error = 0 while i < 10: if GPIO.input(GPIO_PIR) == 1 : ok = ok + 1 if GPIO.input(GPIO_PIR) == 0 : error = error + 1 time.sleep(0.01) i = i + 1 ren = ok/(error+1) return ren

1

GPIO_PIR = 14

為 紅外線檢測模塊與樹莓派的針腳,腳本函數返回0表示無人,>0 為有人
【Python語音識別聊天部分robot.py】


#/usr/bin/python# -*- coding:utf-8 -*-import sysreload(sys)sys.setdefaultencoding( "utf-8" )import urllibimport urllib2import jsonimport uuidimport base64import osimport timefrom renti import * #獲取網路tokenappid=7647466apikey="網路API"secretkey="網路API" _url="h.com/oauth/2.0/token?grant_type=client_credentials&client_id=" + apikey + "&client_secret=" + secretkey; y_post=urllib2.urlopen(_url)y_read=y_post.read()y_token=json.loads(y_read)['access_token']#print y_read#print y_token #------------------function------------- def luyin(): os.system('arecord -D plughw:1,0 -c 1 -d 2 1.wav -r 8000 -f S16_LE 2>/dev/null') def fanyi():
#---------------語音識別部分 mac_address="haogeoyes" with open("1.wav",'rb') as f: s_file = f.read() speech_base64=base64.b64encode(s_file).decode('utf-8') speech_length=len(s_file) data_dict = {'format':'wav', 'rate':8000, 'channel':1, 'cuid':mac_address, 'token':y_token, 'lan':'zh', 'speech':speech_base64, 'len':speech_length} json_data = json.mps(data_dict).encode('utf-8') json_length = len(json_data) asr_server = 'm/server_api' request = urllib2.Request(url=asr_server) request.add_header("Content-Type", "application/json") request.add_header("Content-Length", json_length) fs = urllib2.urlopen(url=request, data=json_data) result_str = fs.read().decode('utf-8') json_resp = json.loads(result_str) if json_resp.has_key('result'): out_txt=json_resp['result'][0] else: out_txt="Null" return out_txt def tuling(b): f=urllib.urlopen("23.com/openapi/api?key="此處為圖靈API"&info=%s" % b) f=json.loads(f.read())['text'] return f def hecheng(text,y_token): #text="你好我是機器人牛牛很高興能夠認識你" geturl="u.com/text2audio?tex="+text+"&lan=zh&per=1&pit=9&spd=6&cuid=CCyo6UGf16ggKZGwGpQYL9Gx&ctp=1&tok="+y_token return os.system('omxplayer "%s" > /dev/null 2>&1 '%(geturl)) #return os.system('omxplayer "%s" > /dev/null 2>&1 '%(geturl)) def nowtime(): return time.strftime('%Y-%m-%d %H:%M:%S ') #---------------main-----------------num=0 #num用來判斷是第一次說話,還是在對話過程中first=1 #判斷是不是第一說話 當1000次沒有人動認為是第一次while True: if ganying()!=0: run=open('run.log','a') if first==0: hecheng("你好,我是牛牛機器人,你可以和我聊天,不過說話的時候你必須靠近話筒近一點,",y_token) hecheng("說點什麼吧,2秒鍾內說完哦.",y_token) first=1 #為1一段時間就不執行 num=0 #從新計數 #print ganying() run.write(nowtime()+"說點神馬吧..........."+'\n') print nowtime()+"說點神馬吧.........." luyin() #開始錄音 out=fanyi().encode("utf-8") #翻譯文字 run.write(nowtime()+"我說:"+out+'\n') print nowtime()+"我說:"+out if out == "Null": text="沒有聽清楚你說什麼" os.system('omxplayer "shenme.wav" > /dev/null 2>&1 ') else: text=tuling(out) hecheng(text,y_token) print nowtime()+"牛牛:"+text run.write(nowtime()+"牛牛:"+text+'\n') run.close() else: #print ganying() #調試查看是否為0有人沒人 #print num num=num+1 #num長時間增大說明沒有人在旁邊 if num > 1000: first=0 #0表示第一次說話

萬事俱備 運行nohup python robot.py 哈哈就可以脫離屏幕開始愉快的語音聊天啦
下面看看聊天的日誌記錄吧
後續更新。。。。。。Python如何用語音優雅的控制小車

Ⅸ 利用python和麥克風進行語音數據採集的流程

使用 Python 和麥克風進行語音數據採集的流程可能包括以下步驟:

閱讀全文

與python麥克風相關的資料

熱點內容
安卓手機mp3壓縮工具 瀏覽:214
程序員和交易員 瀏覽:422
怎麼變字體樣式app 瀏覽:173
名字叫湯什麼的視頻app 瀏覽:209
金屬加密鍵盤聯系電話 瀏覽:335
自製解壓牛奶盒子教程 瀏覽:64
編譯高手的圖片 瀏覽:922
單片機數碼管顯示時分秒 瀏覽:780
手指解壓最簡單的方法 瀏覽:345
韓國郵箱伺服器地址 瀏覽:967
android版本介紹 瀏覽:410
pdf文件加密軟體 瀏覽:410
長沙住房app怎麼看備案 瀏覽:603
安裝加密軟體的電腦會被監控么 瀏覽:221
java微博源碼 瀏覽:569
堆排序簡單實現python 瀏覽:461
單片機引腳與鍵盤的關系 瀏覽:132
壓縮火柴盒製作 瀏覽:38
谷歌地圖android偏移 瀏覽:214
bitlocker硬碟加密空間 瀏覽:238