pythonに基づいて音声入力識別コードの例を実現する。


この文章は主にpythonを通じて音声入力の識別を実現する方法を紹介しています。ここでは例示的なコードで紹介された非常に詳細で、皆さんの学習や仕事に対して一定の参考となる学習価値を持っています。必要な友達は下記を参考にしてください。
紹介します
1.最初の録音はローカルに保存します。
2.Baiduの音声認識sdkを呼び出します。
注意点:Baiduの音声認識は音声源に要求があり、ビットレートは256 kbpsでなければならない。
二、コード

#     
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++
otepad++.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("。"))
以上が本文の全部です。皆さんの勉強に役に立つように、私たちを応援してください。