본문 바로가기
과정/1차 AI프로젝트

Whisper API와 text diff를 이용해 텍스트 비교해보기

by 줘요 2023. 9. 14.

우선 Whisper API와 text diff를 사용하기 위한 기본 설정을 해보자

import openai
from difflib import SequenceMatcher

# OpenAI API 키 설정
OPENAI_API_KEY = "OPENAI_API_KEY를 넣어주세요"
openai.api_key = OPENAI_API_KEY

음성파일을 텍스트로 변경해주는 함수

- 아래 함수에서는 audio_path는 음성 파일의 경로를 나타내고 해당 파일을 읽어 텍스트화 할 예정이다.

- target_language는 오디오 파일을 어떤 언어로 열지 설정해주는 것이며 여기서는 한국어(ko)로 설정해주었다.

- with 문을 사용하여 오디오 파일을 열고, audio_file 변수에 파일을 연결해준다.

- transcript에는 whisper-1을 이용하여 오디오 파일을 변환해주고 언어설정을 전달한다.

- transcript로 변환된 텍스트를 text 변수에 담아주어 text를 반환한다.

def transcribeAudio(audio_path, target_language="ko"):
    try:
        with open(audio_path, "rb") as audio_file:
            transcript = openai.Audio.transcribe("whisper-1", audio_file, target_language=target_language)
            text = transcript['text']
            return text
    except Exception as e:
        return str(e)

변경된 텍스트와 기준이 되는 텍스트 비교하여 점수 리턴 함수

- 이전에 작성하였던 transcribeAudio 함수를 호출하여 음성 파일을 한국어로 변환하여 stt_text 변수에 담아준다.

- SequenceMatcher를 사용하여 두 문자열 stt_text target_text 간의 유사성을 계산한다.

- similarity_ratio * 100를 통해 점수를 계산하여 보여준다.

def compareText(audio_path, target_text):
    # 음성을 텍스트로 변환
    stt_text = transcribeAudio(audio_path, target_language="ko")

    # 문자열 유사성 계산
    similarity_ratio = SequenceMatcher(None, stt_text, target_text).ratio()
    
    return stt_text, similarity_ratio * 100

함수 테스트를 해보자

오디오 경로(audio_path)와 기준이 될 텍스트(target_text)변수에 값을 담아서 comparText함수를 실행한다.

print를 통해서 결과를 테스트한다.

if __name__ == "__main__":
    # 음성 파일 경로 설정
    audio_path = "C:\whisper_test/test.mp3"
    
    # 비교 대상 텍스트 설정
    target_text = "안녕하세요"
    
    # 함수 호출하여 결과 저장
    transcribed_text, similarity_score = compareText(audio_path, target_text)

    # 변환된 텍스트 출력
    print("음성에서 변환된 텍스트:")
    print(transcribed_text)

    # 유사도 점수 출력
    print("음성과 대상 텍스트 출력 유사성:", similarity_score)

결과

댓글