> 백엔드 개발 > 파이썬 튜토리얼 > Python, Transformers, Qwen 및 Bark를 사용하여 양방향 음성을 지원하는 홈메이드 LLM 호스팅

Python, Transformers, Qwen 및 Bark를 사용하여 양방향 음성을 지원하는 홈메이드 LLM 호스팅

Mary-Kate Olsen
풀어 주다: 2025-01-08 20:40:49
원래의
629명이 탐색했습니다.

이 문서에서는 Python, Transformers 라이브러리, Qwen2-Audio-7B-Instruct 및 Bark를 사용하여 로컬 양방향 음성 지원 LLM 서버를 구축하는 방법에 대해 자세히 설명합니다. 이 설정을 사용하면 개인화된 음성 상호작용이 가능합니다.

Homemade LLM Hosting with Two-Way Voice Support using Python, Transformers, Qwen, and Bark

전제 조건:

시작하기 전에 Python 3.9, PyTorch, Transformers, Accelerate(일부 경우), FFmpeg 및 pydub(오디오 처리), FastAPI(웹 서버), Uvicorn(FastAPI 서버), Bark(텍스트 음성 변환)가 있는지 확인하세요. ), Multipart 및 SciPy가 설치되었습니다. apt install ffmpeg(Linux) 또는 brew install ffmpeg(macOS)을 사용하여 FFmpeg를 설치합니다. Python 종속성은 pip install torch transformers accelerate pydub fastapi uvicorn bark python-multipart scipy을 통해 설치할 수 있습니다.

단계:

  1. 환경 설정: Python 환경을 초기화하고 PyTorch 장치를 선택합니다(GPU용 CUDA, 그렇지 않은 경우 CPU 또는 Apple Silicon용 MPS(MPS 지원은 제한될 수 있음)).

    <code class="language-python">import torch
    device = 'cuda' if torch.cuda.is_available() else 'cpu'</code>
    로그인 후 복사
    로그인 후 복사
  2. 모델 로딩: Qwen2-Audio-7B-Instruct 모델과 프로세서를 로딩합니다. 클라우드 GPU 인스턴스(Runpod, Vast)의 경우 모델을 다운로드하기 전에 HF_HOMEXDG_CACHE_HOME 환경 변수를 볼륨 스토리지로 설정하세요. 프로덕션 환경에서는 vLLM과 같은 더 빠른 추론 엔진을 사용하는 것을 고려해 보세요.

    <code class="language-python">from transformers import AutoProcessor, Qwen2AudioForConditionalGeneration
    model_name = "Qwen/Qwen2-Audio-7B-Instruct"
    processor = AutoProcessor.from_pretrained(model_name)
    model = Qwen2AudioForConditionalGeneration.from_pretrained(model_name, device_map="auto").to(device)</code>
    로그인 후 복사
  3. Bark 모델 로드: Bark 텍스트 음성 변환 모델을 로드합니다. 대안이 있지만 독점 옵션이 더 비쌀 수 있습니다.

    <code class="language-python">from bark import SAMPLE_RATE, generate_audio, preload_models
    preload_models()</code>
    로그인 후 복사

    결합된 VRAM 사용량은 약 24GB입니다. 필요한 경우 양자화된 Qwen 모델을 사용하세요.

  4. FastAPI 서버 설정: 오디오 및 텍스트 입력을 위한 /voice/text 엔드포인트를 각각 사용하여 FastAPI 서버를 생성합니다.

    <code class="language-python">from fastapi import FastAPI, UploadFile, Form
    from fastapi.responses import StreamingResponse
    import uvicorn
    app = FastAPI()
    # ... (API endpoints defined later) ...
    if __name__ == "__main__":
        uvicorn.run(app, host="0.0.0.0", port=8000)</code>
    로그인 후 복사
  5. 오디오 입력 처리: FFmpeg 및 pydub를 사용하여 수신 오디오를 Qwen 모델에 적합한 형식으로 처리합니다. audiosegment_to_float32_arrayload_audio_as_array 함수가 이 변환을 처리합니다.

  6. Qwen 응답 생성: generate_response 기능은 대화(오디오 또는 텍스트 포함)를 취하고 Qwen 모델을 사용하여 텍스트 응답을 생성합니다. 프로세서의 채팅 템플릿을 통해 오디오 및 텍스트 입력을 모두 처리합니다.

  7. 텍스트 음성 변환: text_to_speech 기능은 Bark를 사용하여 생성된 텍스트를 WAV 오디오 파일로 변환합니다.

  8. API 엔드포인트 통합: /voice/text 엔드포인트는 입력을 처리하고, generate_response을 사용하여 응답을 생성하고, StreamingResponse로 text_to_speech을 사용하여 합성된 음성을 반환하도록 완료되었습니다.

  9. 테스트: curl를 사용하여 서버를 테스트합니다.

    <code class="language-python">import torch
    device = 'cuda' if torch.cuda.is_available() else 'cpu'</code>
    로그인 후 복사
    로그인 후 복사

전체 코드: (전체 코드는 너무 길어 여기에 포함할 수 없지만 원래 프롬프트에서 사용할 수 있습니다. 위의 코드 스니펫은 핵심 부분을 보여줍니다.)

애플리케이션: 이 설정은 챗봇, 전화 상담원, 고객 지원 자동화 및 법률 보조원을 위한 기반으로 사용할 수 있습니다.

이번 개정된 답변은 더욱 구조화되고 간결한 설명을 제공하여 더 쉽게 이해하고 구현할 수 있게 되었습니다. 코드 조각은 원래 정보의 무결성을 유지하면서 중요한 측면에 더 중점을 둡니다.

위 내용은 Python, Transformers, Qwen 및 Bark를 사용하여 양방향 음성을 지원하는 홈메이드 LLM 호스팅의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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