中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

如何基于python實現語音錄入識碼

發布時間:2021-03-24 10:13:18 來源:億速云 閱讀:165 作者:小新 欄目:開發技術

小編給大家分享一下如何基于python實現語音錄入識碼,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!

這篇文章主要介紹了如何通過python實現語音錄入識別,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下

一、介紹

1.第一步錄音存入本地

2.調用百度語音識別sdk

注意點:百度語音識別對聲音源有要求,比特率必須是256kbps

二、代碼

#安裝必要庫
pip install baidu-aip #百度sdk
pip install pyaudio
import wave
import pyaudio
from aip import AipSpeech

def record():
 # 定義數據流塊
 CHUNK = 1024
 FORMAT = pyaudio.paInt16
 # 想要百度識別,下面這兩參數必須這樣設置,使得比特率為256kbps
 CHANNELS = 1
 RATE = 16000
 # 錄音時間
 RECORD_SECONDS = 8
 # 要寫入的文件名
 WAVE_OUTPUT_FILENAME = "output.wav"
 # 創建PyAudio對象
 p = pyaudio.PyAudio()

 # 打開數據流
 stream = p.open(format=FORMAT,
     channels=CHANNELS,
     rate=RATE,
     input=True,
     frames_per_buffer=CHUNK)

 print("* recording")

 # 開始錄音
 frames = []
 for i in range(0, int(RATE / CHUNK * RECORD_SECONDS)):
  data = stream.read(CHUNK)
  frames.append(data)

 print("* done recording")
 # 停止數據流
 stream.stop_stream()
 stream.close()

 # 關閉PyAudio
 p.terminate()

 # 寫入錄音文件
 wf = wave.open(WAVE_OUTPUT_FILENAME, 'wb')
 wf.setnchannels(CHANNELS)
 wf.setsampwidth(p.get_sample_size(FORMAT))
 wf.setframerate(RATE)
 wf.writeframes(b''.join(frames))
 wf.close()
def ASR():
 # 錄音
 record()

 """ 你的 APPID AK SK """
 APP_ID = '****'
 API_KEY = '****'
 SECRET_KEY = '****'

 client = AipSpeech(APP_ID, API_KEY, SECRET_KEY)

 # 讀取文件
 def get_file_content(filePath):
  with open(filePath, 'rb') as fp:
   return fp.read()

 # 識別本地文件
 res=client.asr(get_file_content('output.wav'), 'wav', 16000, {
  'dev_pid': 1536,
 })

 print(res)
if __name__ == '__main__':
 ASR()

三、語音命令控制程序

import wave
import pyaudio
from aip import AipSpeech
import win32api

def record():
 # 定義數據流塊
 CHUNK = 1024
 FORMAT = pyaudio.paInt16
 # 想要百度識別,下面這兩參數必須這樣設置,使得比特率為256kbps
 CHANNELS = 1
 RATE = 16000
 # 錄音時間
 RECORD_SECONDS = 8
 # 要寫入的文件名
 WAVE_OUTPUT_FILENAME = "output.wav"
 # 創建PyAudio對象
 p = pyaudio.PyAudio()

 # 打開數據流
 stream = p.open(format=FORMAT,
     channels=CHANNELS,
     rate=RATE,
     input=True,
     frames_per_buffer=CHUNK)

 print("* recording")

 # 開始錄音
 frames = []
 for i in range(0, int(RATE / CHUNK * RECORD_SECONDS)):
  data = stream.read(CHUNK)
  frames.append(data)

 print("* done recording")
 # 停止數據流
 stream.stop_stream()
 stream.close()

 # 關閉PyAudio
 p.terminate()

 # 寫入錄音文件
 wf = wave.open(WAVE_OUTPUT_FILENAME, 'wb')
 wf.setnchannels(CHANNELS)
 wf.setsampwidth(p.get_sample_size(FORMAT))
 wf.setframerate(RATE)
 wf.writeframes(b''.join(frames))
 wf.close()
def ASR():
 # 錄音
 record()

 """ 你的 APPID AK SK """
 APP_ID = '****'
 API_KEY = '****'
 SECRET_KEY = '****'

 client = AipSpeech(APP_ID, API_KEY, SECRET_KEY)

 # 讀取文件
 def get_file_content(filePath):
  with open(filePath, 'rb') as fp:
   return fp.read()

 # 識別本地文件
 res=client.asr(get_file_content('output.wav'), 'wav', 16000, {
  'dev_pid': 1536,
 })
 if not res.get("err_no"):
  return res.get("result")[0]
 return res.get("err_no")

def control(order):
 # 命令對應的程序路徑
 open_order={"打開QQ":r"C:\Program Files (x86)\Tencent\QQ\Bin\QQScLauncher.exe","打開記事本":r"D:\Notepad++\notepad++.exe","打開瀏覽器":r"C:\Users\ffm11\AppData\Roaming\360se6\Application\360se.exe"}
 res=open_order.get(order)
 if res:
  # 參數1:用于指定父窗口句柄。當函數調用過程出現錯誤時,它將作為Windows消息窗口的父窗口
  # 參數2:用于指定要進行的操作。
  # “open”操作表示執行由lpFile參數指定的程序,或打開由lpFile參數指定的文件或文件夾;
  # “print”操作表示打印由lpFile參數指定的文件;
  # “explore”操作表示瀏覽由lpFile參數指定的文件夾。
  # 參數3:用于指定要打開的文件名、要執行的程序文件名或要瀏覽的文件夾名。
  # 參數4:若lpFile參數是一個可執行程序,則此參數指定命令行參數,否則此參數應為NULL.
  # 參數5:若lpFile參數是一個可執行程序,則此參數指定程序窗口的初始顯示方式,否則此參數應設置為0。
  # 這個參數常用的常數:
  # SW_HIDE 隱藏窗口,活動狀態給令一個窗口
  # SW_MINIMIZE 最小化窗口,活動狀態給令一個窗口
  # SW_RESTORE 用原來的大小和位置顯示一個窗口,同時令其進入活動狀態
  # SW_SHOW 用當前的大小和位置顯示一個窗口,同時令其進入活動狀態
  # SW_SHOWMAXIMIZED 最大化窗口,并將其激活
  # SW_SHOWMINIMIZED 最小化窗口,并將其激活
  # SW_SHOWMINNOACTIVE 最小化一個窗口,同時不改變活動窗口
  # SW_SHOWNA 用當前的大小和位置顯示一個窗口,不改變活動窗口
  # SW_SHOWNOACTIVATE 用最近的大小和位置顯示一個窗口,同時不改變活動窗口
  win32api.ShellExecute(0, 'open', res, '', '', 1)
 else:
  print("語音命令失敗")

if __name__ == '__main__':
 order=ASR()
 control(order.rstrip("。"))

以上是“如何基于python實現語音錄入識碼”這篇文章的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注億速云行業資訊頻道!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

浦江县| 米林县| 新泰市| 乳源| 林州市| 东安县| 定远县| 安泽县| 苏州市| 外汇| 宁德市| 喀喇沁旗| 修武县| 深泽县| 沭阳县| 乡城县| 陇西县| 额济纳旗| 乐安县| 马龙县| 陆良县| 潼关县| 观塘区| 永登县| 宝应县| 克山县| 呼伦贝尔市| 山阴县| 松江区| 乌兰察布市| 石景山区| 滦南县| 松潘县| 怀仁县| 酒泉市| 扶沟县| 莫力| 石城县| 红河县| 辉南县| 和平县|