Whisper를 사용하여 무료 AI 음성-텍스트 전사 프로그램 만들기

Patricia Arquette
풀어 주다: 2024-10-24 08:13:02
원래의
933명이 탐색했습니다.

최근 Meta Connect에서 마크 저커버그가 언급한

문자보다 음성이 AI와 훨씬 더 자연스럽게 소통할 수 있는 방법이 될 것 같아요.

저는 이에 전적으로 동의하며 특히 오늘날 대부분의 AI 솔루션에 일종의 채팅 기능이 내장되어 있는 경우 질문을 입력하는 것보다 훨씬 빠릅니다.

이 블로그에서는 OpenAI의 Whisper 모델을 사용하여 녹음 내용을 텍스트로 변환하는 API와 간단한 웹사이트를 만들어 보겠습니다.

시작해 보세요!


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)
로그인 후 복사
로그인 후 복사
  • transcribe-audio라는 단일 엔드포인트는 전사된 언어와 텍스트를 반환합니다
  • 예외가 발생하면 오류가 반환됩니다.

AI 부분

속삭임 설정

저는 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
로그인 후 복사

모든 것이 설치되었으므로 이제 속삭임 모델을 설정합니다

  • 필요한 모듈 가져오기
  • 오디오 파일을 업로드할 임시 디렉토리를 설정하세요
  • 현재 기기가 CUDA 기기인지 확인하세요
  • '중간' 속삭임 모델을 로드합니다. 전체 모델 목록을 보려면 여기에서 확인하세요.
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 메소드를 편집하겠습니다

  • 업로드한 파일을 위에서 생성한 uploads 디렉터리에 저장하세요
  • 모델에서 전사 메소드 호출
  • 결과에서 텍스트와 언어를 추출하여 응답으로 반환
  • 마지막으로 업로드한 파일을 삭제합니다.
@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 생략:

Creating a Free AI voice-to-text transcription Program using Whisper

스페인어를 시도하는 나:

Creating a Free AI voice-to-text transcription Program using Whisper


결론과 교훈

사전 학습된 모델을 사용하는 것은 이를 지원할 하드웨어가 있는 경우 구현하기가 매우 쉽습니다. 저는 Intel 14700K CPU와 GTX 1080ti GPU를 사용했습니다. GPU가 조금 낡았음에도 불구하고 여전히 인상적인 결과를 얻었습니다. 예상했던 것보다 훨씬 빨랐습니다. 30초 분량의 오디오를 약 4~5초 안에 전사합니다.

메타 커넥트 행사에서 마크 저커버그는 스페인어 사용자와 대화를 나누며 자신의 새로운 AI 기반 스마트 안경을 시연했고, 안경에는 각 사람의 언어로 된 자막이 표시되었습니다. 꽤 멋지다! 이는 Whisper를 사용하여 가능하지만 대형 모델에서만 가능합니다. 또는 DeepL과 같은 외부 라이브러리를 사용하여 텍스트를 복사한 후 번역을 수행할 수 있습니다.

이제 이것을 안경에 어떻게 끼울까요? ?

이를 추가할 수 있는 좋은 프로젝트는 매크로 키 누르기 또는 요청 시 오디오 녹음으로 텍스트 필드를 채우는 것과 유사한 것을 듣는 OS에 설치되는 서비스입니다. 이것은 좋은 사이드 프로젝트가 될 수 있습니까? Whisper 매체는 그다지 크지 않지만 Whisper "터보" 또는 "작은"으로 대체할 수도 있습니다. 나는 이것이 모바일 장치에서도 실행될 수 있다고 상상합니다. 하하, 또 다른 사이드 프로젝트?

이 블로그가 마음에 드셨다면 좋아요와 댓글 부탁드립니다. 가능성이 무엇인지 확인하기 위해 AI 모델을 로컬에서 실행하는 데 더 많은 노력을 기울일 것입니다.

안녕하세요? LinkedIn에서 나에게!

위 내용은 Whisper를 사용하여 무료 AI 음성-텍스트 전사 프로그램 만들기의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:dev.to
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿
회사 소개 부인 성명 Sitemap
PHP 중국어 웹사이트:공공복지 온라인 PHP 교육,PHP 학습자의 빠른 성장을 도와주세요!