이전 내용
위스퍼(Whisper) 설치
Whisper AI는 OpenAI가 개발한 강력한 음성 인식 모델이다. 다양한 오디오로 구성된 대규모 데이터셋을 학습하고 다국어 음성 인식은 물론 음성 번역과 언어 식별까지 수행할 수 있는 멀티태스크 모델이다. 이 모델을 사용하려면 whisper 라이브러리를 설치해야 한다. 필자의 경우, anaconda prompt(+가상환경)를 통해 설치하고자 한다.
1. PyTorch 설치
Whisper 모델은 PyTorch를 필요로 한다. 다음 명령어를 입력하여 적절한 버전의 PyTorch를 설치한다.
#CUDA를 지원하는 GPU가 있는 경우:
conda install pytorch torchvision torchaudio cudatoolkit=11.3 -c pytorch
#CUDA가 없거나 CPU 버전을 설치하려는 경우:
conda install pytorch torchvision torchaudio cpuonly -c pytorch
2. Whisper 설치
whisper 라이브러리를 설치한다. Whisper는 pip를 통해 설치할 수 있다.
pip install git+https://github.com/openai/whisper.git
# 또는
pip install openai-whisper
3. FFmpeg 설치
Whisper는 FFmpeg를 필요로 한다.
conda install -c conda-forge ffmpeg
※ FFmpeg란? (출처: 위키백과)
FFmpeg은 디지털 음성 스트림과 영상 스트림에 대해서 다양한 종류의 형태로 기록하고 변환하는 컴퓨터 프로그램이다. FFmpeg은 명령어를 직접 입력하는 방식으로 동작하며 여러 가지 자유 소프트웨어와 오픈 소스 라이브러리로 구성되어 있다. 이 프로젝트의 이름은 MPEG 영상 표준화 그룹에서 유래했고, "mpeg" 앞에 붙은 "FF"는 패스트 포워드(fast forward)를 의미한다.
FFmpeg은 리눅스 기반으로 개발되었지만, 애플, 윈도우, 아미가OS 등 대부분의 운영 체제에서 컴파일이 가능하다.
4. 설치 확인
다음 명령어를 통해 Whisper가 제대로 설치되었는지 확인한다
python -c "import whisper; model = whisper.load_model('base'); print('Whisper 설치 성공')"
이 명령어를 실행하면 Whisper 모델을 로드하고 "Whisper 설치 성공"이라는 메시지를 출력한다.
이제 주피터 노트북을 실행하고, 새로운 셀을 만든 후 API 키를 로드하고 위스퍼를 실행해본다.
먼저, 음성을 텍스트로 변환하기 위해 하단의 사이트에서 음성 파일을 먼저 만들었다.
위스퍼로 음성 변환 기술 구현해보기
STT(Speech to Text)
audio transcriptions 를 활용해 텍스트로 변환 가능하다.
import os
import openai
# 환경변수에서 OpenAI API 키를 읽어옴.
openai_api_key = os.getenv('OPENAI_API_KEY')
# API 키가 환경변수에 설정되어 있는지 확인.
if not openai_api_key:
raise ValueError("환경변수 'OPENAI_API_KEY'가 설정되지 않았습니다.")
# OpenAI API 키를 설정.
openai.api_key = openai_api_key
# OpenAI 클라이언트를 생성.
client = openai.OpenAI()
speech_output_path="./roller_voice.mp3"
audio_file = open(speech_output_path, "rb")
transcript=client.audio.transcriptions.create(
model="whisper-1",
file=audio_file
)
print(transcript.text)
▶ 먼저 Openai 키를 설정한 후 client.audio.transcriptions.create() 객체를 생성하게 된다. 이때 모델을 model="whisper-1"과 같이 설정해 주어야 한다. file도 설정하여 음성을 손쉽게 텍스트로 변환할 수 있다.
◆ 위스퍼 모델 직접 실행
위스퍼 모델을 직접 실행할 수도 있다.
이를 위해선 먼저 transformers 를 설치해줘야 한다.
pip install transformers
import torch
from transformers import pipeline, WhisperProcessor, WhisperForConditionalGeneration
device="cuda:0" if torch.cuda.is_available() else "cpu"
torch_dtype = torch.float16 if torch.cuda.is_available() else torch.float32
model_id = "openai/whisper-large-v2"
model = WhisperForConditionalGeneration.from_pretrained("openai/whisper-large-v2")
model.config.forced_decoder_ids = None
model.to(device)
processor = WhisperProcessor.from_pretrained(model_id)
pipe = pipeline(
"automatic-speech-recognition",
model=model,
tokenizer=processor.tokenizer,
feature_extractor=processor.feature_extractor,
max_new_tokens=128,
chunk_length_s=30,
batch_size=16,
return_timestamps=True,
torch_dtype=torch_dtype,
device=device,
)
# 파일 변환
speech_output_path="./roller_voice.mp3"
result_openai = pipe(speech_output_path)
print(result_openai["text"])
음성 번역도 가능하다.
result_trans = pipe(speech_output_path, generate_kwargs={"task":"translate"})
print(result_trans)
[참고하면 좋은 사이트]
https://huggingface.co/openai/whisper-large-v2
TTS(Text to Speech)
텍스트를 음성으로 변환할 때 대표적으로 활용 가능한 것은 구글의 gtts와 Openai의 TTS 변환 기술, 네이버 클로바의 API가 있다. 여기서는 gtts와 Openai의 TTS를 활용해 본다.
◆ gTTS(Google Text to Speech)
구글에서 제공하는 모듈로, 텍스트를 기반으로 음성 파일로 변환할 수 있다.
먼저 gTTS를 설치해야 한다 (필자의 경우는 anaconda prompt + 가상 환경)
pip install gTTS
gTTS에 메시지와 lang을 지정해 준다. (한국어의 경우 'ko') 생성된 tts 객체를 저장하여 음성 파일로 쉽게 변환할 수 있다.
from gtts import gTTS
message = "안녕하세요, 오늘부터 영하 10도의 추운 겨울이 시작된대요. 감기 조심하세요."
tts = gTTS(message, lang="ko")
speech_output_path="./gtts_output.mp3"
tts.save(speech_output_path)
저장 경로로 설정한 폴더에 'gtts_output.mp3' 파일이 생성되었다.
★ 파이썬에서 음성 파일을 재생하려면 IPython을 이용하면 된다.
먼저 anaconda prompt에서 IPython을 설치하고, 주피터노트북에서 모듈을 import 한다.
pip install ipython
from IPython.display import Audio, display
audio_widget = Audio(speech_output_path)
display(audio_widget)
◆ OpenAI TTS 모델
OpenAI 에서도 TTS API의 형태로 제공하고 있다. 유료이긴 하나, 보이스 형태를 여러 가지로 지정할 수 있다.
https://platform.openai.com/docs/guides/text-to-speech
import os
import openai
# 환경변수에서 OpenAI API 키를 읽어옴.
openai_api_key = os.getenv('OPENAI_API_KEY')
# API 키가 환경변수에 설정되어 있는지 확인.
if not openai_api_key:
raise ValueError("환경변수 'OPENAI_API_KEY'가 설정되지 않았습니다.")
# OpenAI API 키를 설정.
openai.api_key = openai_api_key
# OpenAI 클라이언트를 생성.
client = openai.OpenAI()
message = "추운 겨울 감기 조심하세요! 메리 크리스마스~"
response = client.audio.speech.create(
model="tts-1",
voice="fable",
input=message,
)
speech_out_path="./openai_tts_output.mp3"
with open(speech_out_path, "wb") as audio_file:
audio_file.write(response.content)
지정한 경로에 mp3 파일이 생성되었다.
마찬가지로, IPython을 통해 재생해본다.
다음 내용
[출처]
Hey, 파이썬! 생성형 AI 활용 앱 만들어줘
생성 AI 활용기: 챗GPT(ChatGPT)로 이런 일도 할 수 있다
위키백과
허깅페이스 홈페이지
OpenAI 홈페이지
'[파이썬 Projects] > <파이썬 Gen AI>' 카테고리의 다른 글
[Gen AI] 그라디오로 두 번째 챗봇 제작하기-1 (1) | 2024.12.20 |
---|---|
[Gen AI] 문서 요약 프롬프트 제작 (1) | 2024.12.20 |
[Gen AI] 그라디오 챗봇 업그레이드 (2) | 2024.12.19 |
[Gen AI] 랭체인을 활용한 챗봇 업그레이드 - 3 (2) | 2024.12.13 |
[Gen AI] 랭체인을 활용한 챗봇 업그레이드 - 2 (4) | 2024.12.13 |