Computer >> 컴퓨터 >  >> 프로그램 작성 >> Python

Python에서 Pydub 및 Google Speech Recognition API를 사용한 오디오 처리

<시간/>

이 튜토리얼에서는 오디오 파일로 작업할 것입니다. 오디오를 청크로 분해하여 그 안의 내용을 인식합니다. 오디오 파일의 내용도 텍스트 파일에 저장합니다. 아래 명령을 사용하여 다음 모듈을 설치합니다.

pydub을 pip 설치

위의 명령을 실행하면 다음과 같은 성공 메시지가 표시됩니다.

pydubDownloading https://files.pythonhosted.org/packages/79/db/eaf620b73a1eec3c8c6f8f5b0b236a50f9da88ad57802154b7ba7664d0b8.pydub-0. 사전> 
pip install audioread

위의 명령어를 실행하면 다음과 같은 성공 메시지가 나옵니다.

오디오 읽기 다운로드 https://files.pythonhosted.org/packages/2e/0b/940ea7861e0e9049f09dcfd72a90c9ae55f697c17c299a323f0148f913d2/audioread-2용 휠 읽기 오디오 수집용 휠 읽기 audioread(setup.py):'완료' 상태로 완료됨 \Local\pip\Cache\wheels\b9\64\09\0b6417df9d8ba8bc61a7d2553c5cebd714ec169644c88fc012성공적으로 빌드된 audioread수집된 패키지 설치:audioreadsuccessfully installed audioread-2.1.8
Pip install SpeechRecognition

위의 명령어를 실행하면 다음과 같은 성공 메시지가 나옵니다.

SpeechRecognitionDownloading 수집 https://files.pythonhosted.org/packages/26/e1/7f5678cd94ec1234269d23756dbdaa4c8cfaed973412f88ae8adf7893a50/SpeechRecognition-3one 3.8.1

이 과정에는 두 단계가 있습니다.

  • 오디오를 청크로 나눕니다.

  • SpeechRecognition을 사용하여 콘텐츠를 추출해야 합니다. .

라이브러리에서 하나의 오디오 파일을 가져옵니다. 코드를 시작하겠습니다.

예시

# 모듈 가져오기import pydubimport speech_recognition# 오디오 파일 가져오기audio =pydub.AudioSegment.from_wav('audio.wav')# 오디오 길이(밀리초 단위)audio_length =len(audio)print(f'Audio Length:{audio_length}' )# 청크 counterchunk_counter =1audio_text =open('audio_text.txt', 'w+')# 오디오 포인트를 슬라이싱할 위치 설정 =60000# 오버랩 - 슬라이싱 후 남은 오디오rem =8000# 청크를 추적하고 종료 플래그 =0start =0end =0# 범위(0, 2 * audio_length, point)에서 remfor i를 증가시키면서 오디오를 반복합니다. # 첫 번째 반복에서 end =rem if i ==0:start =0 end =point else:# 다른 반복 start =end - rem end =start + point # end가 audio_length보다 크면 end>=audio_length:end =audio_length # 중지 플래그를 나타내기 위해 =1 # 오디오 청크에서 청크 가져오기 =audio[start:end] # 청크 이름 청크 이름 =f'chunk_{chunk_counter}' # c 저장 로컬 저장소로 덩어리 덩어리 chunk.export(chunk_name, format ='wav') # 청크 인쇄 print(f'{chunk_name} start:{start} end:{end}') # 덩어리 카운터 증가 chunk_counter +=1 # 텍스트 인식 from the audio # 인식기 초기화 인식기 =speech_recognition.Recognizer() # 청음된 오디오를 speech_recognition.AudioFile(chunk_name) as chunk_audio:chunk_listened =recognitionr.listen(chunk_audio) # 오디오에서 콘텐츠 인식 try:# 오디오에서 콘텐츠 가져오기 청크 콘텐츠 =recognitionr.recognize_google(chunk_listened) # 파일에 쓰기 audio_text.write(content + '\n') # 인식되지 않는 경우 speak_recognition.UnknownValueError:print('오디오가 인식되지 않습니다') # speech_recognition.RequestError를 제외한 인터넷 오류 as Error:print('Can\'t connect to the internet') # 플래그 확인 if flag ==1:audio_text.close() break

출력

위의 코드를 실행하면 다음과 같은 결과를 얻을 수 있습니다.

 오디오 길이 :480052Chunk_1 시작 :0 종료 :60000Chunk_2 시작 :52000 종료 :112000chunk_3 시작 :104000 종료 :164000CHUNK_4 시작 :156000 종료 :216000CHUNK_5 시작 :208000 종료 :268000CHUNK_6 시작 :260000 종료 :372000CHUNK_8 시작 :372000CHUNK_8 시작 :364000 끝:424000chunk_9 시작:416000 끝:476000chunk_10 시작:468000 끝:480052

파일 내용을 확인 중입니다.

# 파일을 읽기 모드로 열기('audio_text.txt', 'r') as file:print(file.read())

위의 코드를 실행하면 다음과 같은 결과를 얻을 수 있습니다.

영어와 저는 샌프란시스코에 있습니다. 지난 주에 샌프란시스코로 돌아왔습니다. 우리는 교육 국가에서 텍사스에 있었고 교육 회의의 리더는 비행기였습니다. 결과적으로 교육을 개선하십시오. 하루만 시간이 곧 옵니다.오전 12시 1분 그녀의 영어에 대한 모든 것 지금 또는 내 이메일 목록 켜기 당신의 도시에서 스포츠 이메일을 확인하세요Harjeet girlfriend다음 화요일 사무실에서 즐기는 연도 확인하기 영어 계속 듣기 계속 웃으면서 계속 영어 학습을 즐기세요

결론

튜토리얼에 대해 궁금한 점이 있으면 댓글 섹션에 언급하세요.