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 이 녹음 하고 음성 인식 인 터 페 이 스 를 호출 하 는 데 관 한 자 료 는 다른 관련 글 을 주목 하 십시오!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
로마 숫자를 정수로 또는 그 반대로 변환그 중 하나는 로마 숫자를 정수로 변환하는 함수를 만드는 것이었고 두 번째는 그 반대를 수행하는 함수를 만드는 것이었습니다. 문자만 포함합니다'I', 'V', 'X', 'L', 'C', 'D', 'M' ; 문자열이 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.