나의 하루
수지니의 공부 기록 일지

본문 바로가기

카테고리 없음

구글 api사용해서 짧은 음성파일을 텍스트화 시키기

1. m4a -> wav로 변환

변환한 곳 : m4a파일_wav로_변환 (URL첨부했습니다.)

2. 필요한 라이브러리 import

import os
from pydub import AudioSegment
from pydub.playback import play
import speech_recognition as sr

 

3. 음성 -> 텍스트 변환코드

# 음성파일 경로
path = r"C:/Users/sou54/Desktop/"
filePath = "기말과제_wav.wav"

# 현재 작업 디렉토리를 ' C:/Users/sou54/Desktop/ '로 변경
os.chdir(path)

# 주어진 디렉토리의 모든 파일 및 폴더를 반환해서 audio_files에 저장
audio_files = os.listdir()

# path와 filePath를 조합하여 오디오 파일의 전체 경로를 만든다.
# os.path.join() 함수는 경로 및 파일 이름을 결합하여 전체 경로를 만들어준다.
harvard_audio_path = os.path.join(path, filePath)

# 음성 데이터를 처리하고 텍스트로 변환해준다.
recognizer = sr.Recognizer()

# 어떠한 에러도 발생하지 않았을 때
try:
    # 'AudioFile'사용해서 음성파일 열기
    with sr.AudioFile(harvard_audio_path) as source:
        audio = recognizer.record(source) # 오디오 파일에서 음성을 추출한다.

    #  Google API를 통해 음성을 텍스트로 변환한다.(설정 언어는 한국어이다.)
    text = recognizer.recognize_google(audio, language='ko-KR')
    print(text)

    # 텍스트를 text_change파일에 text형식으로 쓰기
    with open('text_change.txt', 'w', encoding='utf-8') as f:
        f.write(text)

# 음성인식을 안될때 알림
except sr.UnknownValueError:
    print("음성을 인식할 수 없습니다.")

# google 클라우드 api에 접근하지 못할 때 알림
except sr.RequestError as e:
    print(f"Google API에 접근할 수 없습니다. 오류: {e}")

# 그 외에 error가 발생했을 때 알림
except Exception as e:
    print(f"오류 발생: {e}")

[output]

안녕하세요 저는 데이터과학부 3학년 21학번 장수진곰탕

 

따로 텍스트 파일로 저장했습니다.

녹음된건 '~진입니다.'인데 '곰탕'으로 나왔습니다. 위와같은 텍스트를 수정해보겠습니다.

 

* 음성파일 경로는 알 맞게 설정해주세요.

4. '곰탕' -> '입니다.'로 치환하는 함수

def replace_text(file_path,old_str,new_str):
    # 파일 읽어오기
    f = open(file_path,'r', encoding='utf-8')
    lines = f.readlines()
    f.close()
   
    # old_str -> new_str 치환
    fw = open(file_path, 'w', encoding='utf-8')
    for line in lines:
        fw.write(line.replace(old_str, new_str))
    fw.close()
 
# old_str  -> 바꿔야하는 것 // new_str -> 바꿀것

 

5. 파일 호출 및 변환

# 파일 경로 지정 및 변환
file_path = " C:/Users/sou54/Desktop/text_change.txt"
replace_text(file_path, "곰탕", "입니다.")

 

6. 치환확인

result_f = open(file_path, encoding='utf-8')

for line in result_f:                                
    print(line)

result_f.close()  

[output]

안녕하세요 저는 데이터과학부 3학년 21학번 장수진입니다.

 

사용된 음성파일1(m4a)

기말과제_m4a.m4a
0.17MB

 

사용된 음성파일2(wav변환)

기말과제_wav.wav
0.73MB