API เพื่อถอดเสียงด้วยเสียงกระซิบ V3 ของ Openai! ขับเคลื่อนโดย? Transformers, Optimum & Flash-Attn
คุณสมบัติ:
ขึ้นอยู่กับโครงการ Whisper CLI ที่รวดเร็วอย่างบ้าคลั่ง ตรวจสอบว่าคุณต้องการตั้งค่าโครงการนี้ในพื้นที่หรือเข้าใจพื้นหลังของเสียงไวรัสตับอย่างบ้าคลั่ง
โครงการนี้มุ่งเน้นไปที่การจัดหา API Whisper Fast Blazing ที่สามารถปรับใช้งานได้พร้อมกับ Docker บนโครงสร้างพื้นฐานคลาวด์ด้วย GPU สำหรับกรณีการใช้งานที่ปรับขนาดได้
ด้วยการเปิดตัวบริการ GPU ล่าสุดฉันได้ตั้งค่าไฟล์ Fly Config เพื่อปรับใช้บนเครื่องบินได้อย่างง่ายดาย! อย่างไรก็ตามคุณสามารถปรับใช้สิ่งนี้ในสภาพแวดล้อม VM อื่น ๆ ที่รองรับ GPU และ Docker
นี่คือมาตรฐานบางอย่างที่เราวิ่งบน Nvidia A100 - 80GB และ Fly.io GPU Infra?
ประเภทการเพิ่มประสิทธิภาพ | เวลาในการถอดความ (150 นาทีของเสียง) |
---|---|
LARGE-V3 (Transformers) ( fp16 + batching [24] + Flash Attention 2 ) | ~ 2 ( 1 นาที 38 วินาที ) |
ขนาดใหญ่ V3 (หม้อแปลง) ( fp16 + batching [24] + Flash Attention 2 + diarization ) | ~ 2 ( 3 นาที 16 วินาที ) |
LARGE-V3 (Transformers) ( fp16 + batching [24] + Flash Attention 2 + fly machine startup ) | ~ 2 ( 1 นาที 58 วินาที ) |
Large-V3 (Transformers) ( fp16 + batching [24] + Flash Attention 2 + diarization + fly machine startup ) | ~ 2 ( 3 นาที 36 วินาที ) |
เวลาเริ่มต้นโดยประมาณสำหรับเครื่องบินที่มี GPU และโหลดโมเดลอยู่ที่ประมาณ 20 วินาที เวลาที่เหลืออยู่ในการคำนวณจริง
yoeven/insanely-fast-whisper-api:latest
Docker Hub: yoeven/whisper-api อย่างบ้าคลั่ง
app
ในตอนนี้ fly.toml
ถ้าคุณต้องการimage = 'yoeven/insanely-fast-whisper-api:latest'
in fly.toml
เฉพาะในกรณีที่คุณต้องการสร้างภาพใหม่จาก Dockerfile
ติดตั้ง Fly CLI หากยังไม่มี
ต้องเรียกใช้สิ่งนี้ในครั้งแรกที่คุณเปิดแอป Fly ใหม่
fly launch
Fly Will Prompt: Would you like to copy its configuration to the new app? (y/N)
ใช่ ( y
) เพื่อคัดลอกการกำหนดค่าจาก repo
Fly Will Prompt: Do you want to tweak these settings before proceeding
หากคุณไม่มีอะไรจะปรับ การตั้งค่าที่ต้องการส่วนใหญ่ได้รับการกำหนดค่าไว้แล้วในไฟล์ fly.toml
ไม่มี n
เพื่อดำเนินการต่อและปรับใช้
ครั้งแรกที่คุณปรับใช้จะต้องใช้เวลาสักครู่เนื่องจากภาพมีขนาดใหญ่มาก การปรับใช้ครั้งต่อไปจะเร็วขึ้นมาก
เรียกใช้สิ่งต่อไปนี้หากคุณต้องการตั้งค่า Diarization ลำโพงหรือโทเค็น Auth เพื่อรักษาความปลอดภัย API ของคุณ:
fly secrets set ADMIN_KEY= < your_token > HF_TOKEN= < your_hf_key >
เรียกใช้ fly secrets list
เพื่อตรวจสอบว่าความลับมีอยู่หรือไม่
เพื่อให้ได้โทเค็นใบหน้ากอดสำหรับลำโพง diarization คุณต้องทำสิ่งต่อไปนี้:
pyannote/segmentation-3.0
pyannote/speaker-diarization-3.1
hf.co/settings/tokens
API ของคุณควรมีลักษณะเช่นนี้:
https://insanely-fast-whisper-api.fly.dev
เรียกใช้ fly logs -a insanely-fast-whisper-api
เพื่อดูบันทึกแบบเรียลไทม์ของเครื่องบินของคุณ
เนื่องจากนี่เป็นแอพ Dockerized คุณสามารถปรับใช้กับผู้ให้บริการคลาวด์ใด ๆ ที่รองรับ Docker และ GPU ด้วยการปรับแต่งเล็กน้อย
JigSawStack ให้ API ที่ทรงพลังมากมายสำหรับกรณีการใช้งานที่หลากหลายในขณะที่ทำให้ต้นทุนต่ำ โครงการนี้มีให้เป็น API ที่ได้รับการจัดการอย่างสมบูรณ์ที่นี่พร้อมความสามารถในการปรับขนาดคลาวด์ที่เพิ่มขึ้นเพื่อประสิทธิภาพด้านต้นทุนและเวลาใช้งานสูง ลงทะเบียนที่นี่ฟรี!
หากคุณได้ตั้งค่าความลับของผู้ดูแลระบบ ADMIN_KEY
คุณจะต้องผ่าน x-admin-api-key
ในส่วนหัวด้วยค่าของคีย์ที่คุณตั้งไว้ก่อนหน้านี้
หากนำไปใช้กับ URL พื้นฐานควรมีลักษณะเช่นนี้:
https://{app_name}.fly.dev/{path}
ขึ้นอยู่กับผู้ให้บริการคลาวด์ที่คุณปรับใช้ URL พื้นฐานจะแตกต่างกัน
/
ถอดความหรือแปลเสียงเป็นข้อความ
ชื่อ | ค่า |
---|---|
URL (จำเป็น) | URL ของเสียง |
งาน | transcribe translate เริ่มต้น: transcribe |
ภาษา | None , en , ภาษาอื่น ๆ ค่าเริ่มต้น: None การตรวจจับภาษาอัตโนมัติโดยอัตโนมัติ |
batch_size | จำนวนชุดขนานที่คุณต้องการคำนวณ ลดถ้าคุณเผชิญกับ ooms ค่าเริ่มต้น: 64 |
การประทับเวลา | chunk , word เริ่มต้น: chunk |
diarise_audio | พลิกหน้าคลิปเสียงโดยลำโพง คุณจะต้องตั้งค่า hf_token ค่าเริ่มต้น: false |
webhook | การโทร POST webhook เมื่อเสร็จสิ้นหรือข้อผิดพลาด ค่าเริ่มต้น: None |
webhook.url | url เพื่อส่ง webhook |
webhook.header | ส่วนหัวที่จะส่งด้วย webhook |
is_async | รันงานในพื้นหลังและส่งผลลัพธ์ไปยัง URL WebHook true false ต้นเท็จ: false |
managed_task_id | รหัสงานที่กำหนดเองใช้เพื่ออ้างอิงงานต่อเนื่อง ค่าเริ่มต้น: uuid() v4 will be generated for each transcription task |
/tasks
รับงานการถอดความที่ใช้งานอยู่ทั้งหมดทั้งงานพื้นหลังแบบ async และงานต่อเนื่อง
/status/{task_id}
รับสถานะของงานงานที่เสร็จสมบูรณ์จะถูกลบออกจากรายการซึ่งอาจทำให้เกิดข้อผิดพลาด
/cancel/{task_id}
ยกเลิกงานพื้นหลัง Async เฉพาะงานการถอดความที่สร้างขึ้นด้วย is_async
ที่ตั้งค่าเป็น true
เท่านั้นที่สามารถยกเลิกได้
# clone the repo
$ git clone https://github.com/jigsawstack/insanely-fast-whisper-api.git
# change the working directory
$ cd insanely-fast-whisper-api
# install torch
$ pip3 install torch torchvision torchaudio
# upgrade wheel and install required packages for FlashAttention
$ pip3 install -U wheel && pip install ninja packaging
# install FlashAttention
$ pip3 install flash-attn --no-build-isolation
# generate updated requirements.txt if you want to use other management tools (Optional)
$ poetry export --output requirements.txt
# get the path of python
$ which python3
# setup virtual environment
$ poetry env use /full/path/to/python
# install the requirements
$ poetry install
# run the app
$ uvicorn app.app:app --reload
เครื่องบินจะถูกเรียกเก็บเงินจากครั้งที่สองและอาจใช้เวลาไม่ถึง 15 นาทีก่อนที่จะตัดสินใจปิดมันลง คุณสามารถปิดเครื่องเมื่อคุณทำ API เพื่อประหยัดค่าใช้จ่าย คุณสามารถทำได้โดยส่งคำขอ POST
ไปยังจุดสิ้นสุดต่อไปนี้:
https://api.machines.dev/v1/apps/<app_name>/machines/<machine_id>/stop
ส่วนหัวการอนุญาต:
Authorization Bearer <fly_token>
เรียนรู้เพิ่มเติมที่นี่
โครงการนี้เป็นส่วนหนึ่งของ JigSawStack - API ที่มีประสิทธิภาพและเป็นมิตรกับนักพัฒนาสำหรับกรณีการใช้งานที่หลากหลายในขณะที่รักษาค่าใช้จ่ายต่ำ ลงทะเบียนที่นี่ฟรี!