python 녹음 및 바 이 두 음성 인식 인터페이스 호출 예제


#!/usr/bin/env python
import requests
import json
import base64
import pyaudio
import wave
import os
import psutil


#         
def bat(voice_path):
  baidu_server = 'https://aip.baidubce.com/oauth/2.0/token?'
  grant_type = 'client_credentials'
  client_id = 'uj70rS1LiwZ9sQDvMSUqKsie' #API KEY
  client_secret = 'Q88eav41PzeNLczZ3hlRjhR8e4WShXwD' #Secret KEY             ,     API KEY   Secret KEY

  #    token url
  url = baidu_server+'grant_type='+grant_type+'&client_id='+client_id+'&client_secret='+client_secret

  #  token
  res = requests.get(url).text
  data = json.loads(res)
  token = data['access_token']

  #       ,   ,   
  VOICE_RATE = 8000
  FILE_NAME = voice_path
  # USER_ID = '16241950' #   id       ,       
  FILE_TYPE = 'wav'
  CUID="wate_play"
  #         
  f_obj = open(FILE_NAME, 'rb')
  content = base64.b64encode(f_obj.read())  #         base64    
  speech = content.decode("utf-8")
  size = os.path.getsize(FILE_NAME)

  #json  
  datas = json.dumps({
    'format': FILE_TYPE,
    'rate': VOICE_RATE,
    'channel': 1,
    'cuid': CUID,
    'token': token,
    'speech': speech,
    'len': size,
    "dev_pid":"1536"
  })
  return datas

#  headers     url
def post(datas):
  headers = {'Content-Type':'application/json'}
  url = 'https://vop.baidu.com/server_api'
  # url = "http://vop.baidu.com/server_api"

  # post     
  request = requests.post(url, datas, headers)
  result = json.loads(request.text)
  text = result.get("result")
  if result['err_no'] == 0:
    return text
  else:
    return "Error"


def get_audio(filepath):
  input("       >>>")   #      ,input     ,  str,   aa
  CHUNK = 256         #      
  FORMAT = pyaudio.paInt16  #    (     )
  CHANNELS = 1        #    ;   :            
  RATE = 8000        #    ;   :             ,    8kHz, 16kHz, 32kHz, 48kHz, 11.025kHz, 22.05kHz, 44.1kHz
  RECORD_SECONDS = 5     #    
  WAVE_OUTPUT_FILENAME = filepath   #wav    
  p = pyaudio.PyAudio()        #   

  stream = p.open(format=FORMAT,
          channels=CHANNELS,
          rate=RATE,
          input=True,
          frames_per_buffer=CHUNK)
  print("*"*10, "    :  5      ")
  frames = []                         #      
  for i in range(0, int(RATE / CHUNK * RECORD_SECONDS)):   #  ,   11025 / 256 * 5
    data = stream.read(CHUNK)                #  chunk       data 
    frames.append(data)                   #   frames     data
  # print(frames)
  print("*" * 10, "    
") stream.stop_stream() stream.close() # p.terminate() # wf = wave.open(WAVE_OUTPUT_FILENAME, 'wb') # wav wf, WAV wf.setnchannels(CHANNELS) # wf.setsampwidth(p.get_sample_size(FORMAT)) # wf.setframerate(RATE) # wf.writeframes(b''.join(frames)) # wf.close() # return def check_disk(): list_drive = psutil.disk_partitions() # , list_disk = [] for drive in list_drive: list_disk.append(drive.device) return list_disk if __name__ == '__main__': list_disk = check_disk() # dirname_path = os.path.join(list_disk[0], "voice") # , (mac os ) if not os.path.exists(dirname_path): os.makedirs(dirname_path) filename = "voice.wav" # in_path = os.path.join(dirname_path, filename) get_audio(in_path) # datas = bat(in_path) # , res = post(datas) # , print(" :",res[0])
구현 효과:

상기 코드 에 서 는 requests,psutil,pyaudio 등 라 이브 러 리 에 설치 해 야 합 니 다.그 중에서 pyaudio 라 이브 러 리 는 python 3 환경 에서 설치 하 는 것 이 비교적 특수 합 니 다.
windows 환경 에서 구체 적 인 절 차 는 다음 과 같다.
첫 번 째 단계:whl 파일 지원 다운로드
url: https://www.lfd.uci.edu/~gohlke/pythonlibs/#pyaudio

주의:
자신의 python 해석 기 대응 버 전 을 다운로드 합 니 다.
잘못 다운로드 하지 마 세 요.자원 이 많 습 니 다. 
두 번 째 단계:cmd,cd 를 열 고 다운로드 한 whl 이 있 는 디 렉 터 리 에 들 어 갑 니 다.
   실행 명령:pip install Twisted-18.7.0-cp36-cp36m-winamd64.whl     #  다운로드 한 버 전 은 다음 버 전과 같 습 니 다. 
세 번 째 단계:명령 실행:pip install pyaudio     설치 하 다.
로 컬 에 python 2 와 python 3 가 동시에 설치 되 어 있 으 면 python 3 에 설치 하려 면 cmd 명령 에서 pip 를 pip 3 로 바 꾸 면 됩 니 다.
mac os 에서 pyaudio 를 설치 하 는 절 차 는 다음 과 같 습 니 다.

여기까지 끝!
이상 은 python 이 녹음 하고 바 이 두 음성 인식 인 터 페 이 스 를 호출 하 는 예제 의 상세 한 내용 입 니 다.python 이 녹음 하고 음성 인식 인 터 페 이 스 를 호출 하 는 데 관 한 자 료 는 다른 관련 글 을 주목 하 십시오!

좋은 웹페이지 즐겨찾기