최근 Meta Connect에서 마크 저커버그가 언급한
문자보다 음성이 AI와 훨씬 더 자연스럽게 소통할 수 있는 방법이 될 것 같아요.
저는 이에 전적으로 동의하며 특히 오늘날 대부분의 AI 솔루션에 일종의 채팅 기능이 내장되어 있는 경우 질문을 입력하는 것보다 훨씬 빠릅니다.
이 블로그에서는 OpenAI의 Whisper 모델을 사용하여 녹음 내용을 텍스트로 변환하는 API와 간단한 웹사이트를 만들어 보겠습니다.
시작해 보세요!
먼저 API를 만들어야 합니다. 여기에는 transcribe_audio
라고 부르는 메소드가 하나만 포함됩니다.다음 모듈을 설치해 보겠습니다
pip install fastapi uvicorn python-multipart
청사진의 코드는 다음과 같습니다.
from fastapi import FastAPI, File, UploadFile from fastapi.responses import JSONResponse app = FastAPI() @app.post("/transcribe-audio/") async def transcribe_audio(file: UploadFile = File(...)): try: transcribed_text = "Call Whisper here" return JSONResponse(content={"lang": "en", "transcribed_text": transcribed_text}) except Exception as e: return JSONResponse(content={"error": str(e)}, status_code=500)
저는 torchaudio와 함께 CUDA 전용 버전의 PyTorch를 다운로드하기로 선택했습니다
pip install torch==1.11.0+cu113 torchaudio===0.11.0+cu113 -f https://download.pytorch.org/whl/cu113/torch_stable.html
또 한 가지 주의할 점은 Nvidia GPU가 있는 경우 GPU를 사용하려면 이 애플리케이션용 CUDA 드라이버를 설치해야 한다는 것입니다. 그렇지 않으면 CPU를 실행 대상으로 삼게 되어 결과가 느려지게 됩니다.
다음으로 FASTAPI와 Transformers를 설치하고 가속 및 numpy<2; 더 낮은 버전의 numpy를 사용하려는 이유는 torch로 실행하는 동안 경고를 피하기 위해서입니다.
pip install transformers accelerate "numpy<2"
마지막으로 git에서 Whisper를 다운로드합니다. 저는 이것이 모델을 설치하는 가장 쉬운 방법이라는 것을 알았습니다.
pip install git+https://github.com/openai/whisper.git
모든 것이 설치되었으므로 이제 속삭임 모델을 설정합니다
from fastapi import FastAPI, File, UploadFile from fastapi.responses import JSONResponse import torch import whisper from pathlib import Path import os # Directory to save uploaded files UPLOAD_DIR = Path("./uploaded_audios") UPLOAD_DIR.mkdir(parents=True, exist_ok=True) # check if the device is a cuda device, else use CPU device = "cuda:0" if torch.cuda.is_available() else "cpu" print(f"Using Device: {device}") # for a full list of models see https://github.com/openai/whisper?tab=readme-ov-file#available-models-and-languages model = whisper.load_model("medium", device=device) app = FastAPI()
이제 uvicorn main:app --reload를 사용하여 애플리케이션을 실행하면 모델이 성공적으로 로드된 것을 볼 수 있습니다(선택한 모델에 따라 시간이 걸릴 수 있음). 또한 CUDA 드라이버를 설치한 경우 로그에 Using Device: cuda:0이 표시됩니다
모델을 사용하여 전사를 수행하도록 transcribe_audio 메소드를 편집하겠습니다
@app.post("/transcribe-audio/") async def transcribe_audio(file: UploadFile = File(...)): try: # Path to save the file file_path = f"{UPLOAD_DIR}/{file.filename}" # Save the uploaded audio file to the specified path with open(file_path, "wb") as f: f.write(await file.read()) # transcribe the audio using whisper model result = model.transcribe(file_path) # Extract the transcription text from the result transcribed_text = result['text'] return JSONResponse(content={"lang": result["language"], "transcribed_text": transcribed_text}) except Exception as e: print(e.__cause__) return JSONResponse(content={"error": str(e)}, status_code=500) finally: # Optionally, remove the saved file after transcription os.remove(file_path)
이제 API를 실행하고 양식 데이터의 오디오 파일을 사용하여 /transcribe-audio에 대한 POST 요청을 수행하면 다음을 얻게 됩니다.
pip install fastapi uvicorn python-multipart
'중간'을 선택한 이유는 구두점을 잘 쓰기 때문입니다. 다음 예에서는 쉼표를 추가합니다
from fastapi import FastAPI, File, UploadFile from fastapi.responses import JSONResponse app = FastAPI() @app.post("/transcribe-audio/") async def transcribe_audio(file: UploadFile = File(...)): try: transcribed_text = "Call Whisper here" return JSONResponse(content={"lang": "en", "transcribed_text": transcribed_text}) except Exception as e: return JSONResponse(content={"error": str(e)}, status_code=500)
다른 언어도 이해할 수 있습니다
pip install torch==1.11.0+cu113 torchaudio===0.11.0+cu113 -f https://download.pytorch.org/whl/cu113/torch_stable.html
AI는 훌륭합니다. 방금 이 API를 테스트할 수 있는 간단한 웹사이트를 만들어 달라고 요청했는데, 도움이 되는 많은 코드가 나왔습니다. ChatGPT에게 감사드립니다.
내 GitHub에서 코드를 찾을 수 있지만 최종 제품은 다음과 같습니다.
장문의 GIF 생략:
스페인어를 시도하는 나:
사전 학습된 모델을 사용하는 것은 이를 지원할 하드웨어가 있는 경우 구현하기가 매우 쉽습니다. 저는 Intel 14700K CPU와 GTX 1080ti GPU를 사용했습니다. GPU가 조금 낡았음에도 불구하고 여전히 인상적인 결과를 얻었습니다. 예상했던 것보다 훨씬 빨랐습니다. 30초 분량의 오디오를 약 4~5초 안에 전사합니다.
메타 커넥트 행사에서 마크 저커버그는 스페인어 사용자와 대화를 나누며 자신의 새로운 AI 기반 스마트 안경을 시연했고, 안경에는 각 사람의 언어로 된 자막이 표시되었습니다. 꽤 멋지다! 이는 Whisper를 사용하여 가능하지만 대형 모델에서만 가능합니다. 또는 DeepL과 같은 외부 라이브러리를 사용하여 텍스트를 복사한 후 번역을 수행할 수 있습니다.
이제 이것을 안경에 어떻게 끼울까요? ?
이를 추가할 수 있는 좋은 프로젝트는 매크로 키 누르기 또는 요청 시 오디오 녹음으로 텍스트 필드를 채우는 것과 유사한 것을 듣는 OS에 설치되는 서비스입니다. 이것은 좋은 사이드 프로젝트가 될 수 있습니까? Whisper 매체는 그다지 크지 않지만 Whisper "터보" 또는 "작은"으로 대체할 수도 있습니다. 나는 이것이 모바일 장치에서도 실행될 수 있다고 상상합니다. 하하, 또 다른 사이드 프로젝트?
이 블로그가 마음에 드셨다면 좋아요와 댓글 부탁드립니다. 가능성이 무엇인지 확인하기 위해 AI 모델을 로컬에서 실행하는 데 더 많은 노력을 기울일 것입니다.
안녕하세요? LinkedIn에서 나에게!
위 내용은 Whisper를 사용하여 무료 AI 음성-텍스트 전사 프로그램 만들기의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!