91av视频/亚洲h视频/操亚洲美女/外国一级黄色毛片 - 国产三级三级三级三级

  • 大小: 7KB
    文件類型: .py
    金幣: 1
    下載: 1 次
    發布日期: 2021-06-08
  • 語言: Python
  • 標簽: 語音識別??api??

資源簡介

百度語音api實現語音識別小程序,通過判斷當前音量大小自動識別判斷是否該結束錄音,原理還是挺簡單的,就是遇到一些小坑,自己學習了也分享給大家

資源截圖

代碼片段和文件信息

#!/usr/bin/env?python
#?-*-?coding:?UTF-8?-*-

from?time?import?sleep
from?aip?import?AipSpeech
from?numpy?import?frombuffershort

import?wave
#from?wave?import?open??#這樣寫就重名了
from?pyaudio?import?PyAudiopaInt16
#import?pyaudio
from?threading?import?Thread
import?pygame
import?os
import?tkinter



#由于百度語音識別最大時長為60s,所以我們創建這個計時的方法
timeout?=?False

def?timeclock():
global?timeout
timeout?=?True
#循環里面的全局變量要加global
for?x?in?range(60):
print(‘ticking...‘?timeout)
sleep(1)
#如果標志位為False,則停止計時
if?timeout?==?False:
return?0
#超過60秒賦值為false,停止錄音
timeout?=?False



#錄音
def?my_record(path?=?‘01.wav‘):
#規定聲音屬性
framerate=16000 #采樣頻率
NUM_SAMPLES=2000 #內部緩存塊的大小,每次讀取的采樣數據塊的個數
channels=1 #聲道
sampwidth=2 #采樣大小/采樣寬度/位深2B?16bit

pa=PyAudio()
#創建輸入流
stream=pa.open(format?=?paInt16channels=1
rate=framerateinput=True
frames_per_buffer=NUM_SAMPLES)
#help(stream)
Buf_Data=[]
‘‘‘
#定時錄制語音模式,?錄音時間公式:1/頻率*采樣點數*20?=?1/16000*2000*20?=?2.5s
for?count?in?range(20):
string_audio_data?=?stream.read(NUM_SAMPLES)
#print(string_audio_data?‘\n‘)
#將錄制的數據存放到數組中
Buf_Data.append(string_audio_data)
print(‘....‘)
‘‘‘

#按需錄音模式,連續2.5秒不出聲,就停止錄音
#測試:
#datalistfile?=?‘‘
coutif?=?0
print(‘正在聆聽.....‘)
#計時功能啟動
tc?=?Thread(target?=?timeclock?name?=?‘loopwall‘)
tc.deamon?=?True
tc.start()
#剛開始錄音的時候可能有比較長的時間做準備,所以我們先錄制1.25秒鐘
for?xtime?in?range(10):
string_audio_data?=?stream.read(NUM_SAMPLES)
Buf_Data.append(string_audio_data)
print(‘..‘)
#一般人這時候已經開始說話了
#當沒超時錄音
global?timeout
while?timeout:
#循環一圈用時約0.125s
string_audio_data?=?stream.read(NUM_SAMPLES)
Buf_Data.append(string_audio_data)
print(‘..‘)
#將數據轉換為數組
data_list?=?frombuffer(string_audio_data?dtype=short)
#判斷是否有聲音
if?max(data_list)<5000: #5000:分貝閾值,小于5000視為環境噪音或靜音
coutif?+=?1
else:
coutif?=?0
#如果連續15個采樣點都小于5000,退出循環,即連續1/16000*2000*15=1.875秒沒聲,就不錄音了
if?coutif?>?15:
timeout?=?False
break
#錄音結束
#timeout?=?True
‘‘‘
#用于測試
datalistfile?+=?str(max(data_list))
datalistfile?+=?‘\t‘
with?open(‘datalist.txt‘?‘a‘)?as?fd:
datalistfile?+=?‘\n‘
fd.write(datalistfile)
‘‘‘



#將存儲的數據保存成wav文件
#filepath?=?r‘E:\\python?practice\\{}.wav‘.format(time.strftime(“%Y%m%d%H%M%S“))

wf=wave.open(path‘wb‘) #注意,文件名中不能帶:等特殊符號
#wf=wave.open(‘.\\myrecord\\{}.wav‘.format(time.strftime(“%Y%m%d%H:%M:%S“))‘wb‘)
#設置聲道、采樣頻率、采樣大小
wf.setnchannels(channels)
#help(wave)
wf.setsampwidth(sampwidth)
wf.setframerate(framerate)
wf.writeframes(b““.join(Buf_Data))
wf.close()
stream.close()




#chunk=2014
#播放wav文件
def?play_wav(path?=?‘01.wav‘):
wf=wave.open(path‘rb‘)

p=PyAudio()
#創建輸出流
stream=p.open(format=p.get_format_from_width(wf.getsampwidth())channels=
wf.getnchannels()rate=wf.getfr

評論

共有 條評論