[บล็อก] [กระดาษ] [การ์ดโมเดล] [ตัวอย่าง Colab]
Whisper เป็นโมเดลการรู้จำคำพูดที่ใช้งานทั่วไป ได้รับการฝึกฝนบนชุดข้อมูลขนาดใหญ่ที่มีเสียงที่หลากหลาย และยังเป็นโมเดลมัลติทาสก์ที่สามารถทำการรู้จำคำพูดหลายภาษา การแปลคำพูด และการระบุภาษา
โมเดลลำดับต่อลำดับของ Transformer ได้รับการฝึกอบรมเกี่ยวกับงานการประมวลผลคำพูดต่างๆ รวมถึงการรู้จำคำพูดหลายภาษา การแปลคำพูด การระบุภาษาพูด และการตรวจจับกิจกรรมเสียง งานเหล่านี้จะถูกแสดงร่วมกันเป็นลำดับของโทเค็นที่ตัวถอดรหัสคาดการณ์ ซึ่งทำให้โมเดลเดียวสามารถแทนที่ขั้นตอนต่างๆ ของไปป์ไลน์การประมวลผลเสียงพูดแบบเดิมได้ รูปแบบการฝึกมัลติทาสก์ใช้ชุดโทเค็นพิเศษที่ทำหน้าที่เป็นตัวระบุงานหรือเป้าหมายการจัดหมวดหมู่
เราใช้ Python 3.9.9 และ PyTorch 1.10.1 เพื่อฝึกฝนและทดสอบโมเดลของเรา แต่คาดว่าโค้ดเบสจะเข้ากันได้กับ Python 3.8-3.11 และ PyTorch เวอร์ชันล่าสุด โค้ดเบสยังขึ้นอยู่กับแพ็คเกจ Python บางตัว โดยเฉพาะอย่างยิ่ง tiktoken ของ OpenAI สำหรับการใช้งานโทเค็นไนเซอร์ที่รวดเร็ว คุณสามารถดาวน์โหลดและติดตั้ง (หรืออัปเดต) Whisper รุ่นล่าสุดได้ด้วยคำสั่งต่อไปนี้:
pip install -U openai-whisper
คำสั่งต่อไปนี้จะดึงและติดตั้งการคอมมิตล่าสุดจากที่เก็บนี้ พร้อมกับการขึ้นต่อกันของ Python:
pip install git+https://github.com/openai/whisper.git
หากต้องการอัปเดตแพ็กเกจเป็นเวอร์ชันล่าสุดของที่เก็บนี้ โปรดเรียกใช้:
pip install --upgrade --no-deps --force-reinstall git+https://github.com/openai/whisper.git
นอกจากนี้ยังจำเป็นต้องติดตั้งเครื่องมือบรรทัดคำสั่ง ffmpeg
บนระบบของคุณ ซึ่งหาได้จากผู้จัดการแพ็คเกจส่วนใหญ่:
# on Ubuntu or Debian
sudo apt update && sudo apt install ffmpeg
# on Arch Linux
sudo pacman -S ffmpeg
# on MacOS using Homebrew (https://brew.sh/)
brew install ffmpeg
# on Windows using Chocolatey (https://chocolatey.org/)
choco install ffmpeg
# on Windows using Scoop (https://scoop.sh/)
scoop install ffmpeg
คุณอาจต้องติดตั้ง rust
ด้วย ในกรณีที่ tiktoken ไม่มีล้อที่สร้างไว้ล่วงหน้าสำหรับแพลตฟอร์มของคุณ หากคุณเห็นข้อผิดพลาดในการติดตั้งระหว่างคำสั่ง pip install
ด้านบน โปรดทำตามหน้าเริ่มต้นใช้งานเพื่อติดตั้งสภาพแวดล้อมการพัฒนา Rust นอกจากนี้ คุณอาจต้องกำหนดค่าตัวแปรสภาพแวดล้อม PATH
เช่น export PATH="$HOME/.cargo/bin:$PATH"
หากการติดตั้งล้มเหลวโดย No module named 'setuptools_rust'
คุณต้องติดตั้ง setuptools_rust
เช่นโดยการรัน:
pip install setuptools-rust
มีโมเดลทั้งหมดหกขนาด โดยสี่ขนาดมีเวอร์ชันภาษาอังกฤษเท่านั้น ซึ่งให้ความเร็วและความแม่นยำที่ต่างกัน ด้านล่างนี้คือชื่อของรุ่นที่มีจำหน่าย รวมถึงความต้องการหน่วยความจำโดยประมาณ และความเร็วในการอนุมานเมื่อเทียบกับรุ่นขนาดใหญ่ ความเร็วสัมพัทธ์ด้านล่างวัดโดยการถอดเสียงคำพูดภาษาอังกฤษบน A100 และความเร็วในชีวิตจริงอาจแตกต่างกันอย่างมากขึ้นอยู่กับปัจจัยหลายประการ รวมถึงภาษา ความเร็วในการพูด และฮาร์ดแวร์ที่มีอยู่
ขนาด | พารามิเตอร์ | รุ่นภาษาอังกฤษเท่านั้น | โมเดลหลายภาษา | VRAM ที่จำเป็น | ความเร็วสัมพัทธ์ |
---|---|---|---|---|---|
ขนาดเล็ก | 39 ม | tiny.en | tiny | ~1กิกะไบต์ | ~10x |
ฐาน | 74 ม | base.en | base | ~1กิกะไบต์ | ~7x |
เล็ก | 244 ม | small.en | small | ~2 กิกะไบต์ | ~4x |
ปานกลาง | 769 ม | medium.en | medium | ~5GB | ~2x |
ใหญ่ | 1550 ม | ไม่มี | large | ~10GB | 1x |
เทอร์โบ | 809 ม | ไม่มี | turbo | ~6 กิกะไบต์ | ~8x |
โมเดล .en
สำหรับแอปพลิเคชันเฉพาะภาษาอังกฤษมีแนวโน้มที่จะทำงานได้ดีกว่า โดยเฉพาะรุ่น tiny.en
และ base.en
เราสังเกตเห็นว่าความแตกต่างจะมีนัยสำคัญน้อยลงสำหรับรุ่น small.en
และ medium.en
นอกจากนี้ รุ่น turbo
ยังเป็นเวอร์ชันที่ได้รับการปรับปรุงประสิทธิภาพของ large-v3
ซึ่งให้ความเร็วการถอดเสียงที่เร็วขึ้นโดยที่ความแม่นยำลดลงน้อยที่สุด
ประสิทธิภาพของ Whisper จะแตกต่างกันไปขึ้นอยู่กับภาษา รูปด้านล่างแสดงรายละเอียดประสิทธิภาพของโมเดล large-v3
และ large-v2
ตามภาษา โดยใช้ WER (อัตราข้อผิดพลาดของคำ) หรือ CER (อัตราข้อผิดพลาดของอักขระ แสดงเป็น ตัวเอียง ) ที่ประเมินบนชุดข้อมูล Common Voice 15 และ Fleurs ตัวชี้วัด WER/CER เพิ่มเติมที่สอดคล้องกับโมเดลและชุดข้อมูลอื่นๆ สามารถพบได้ในภาคผนวก D.1, D.2 และ D.4 ของรายงาน รวมถึงคะแนน BLEU (การศึกษาเพื่อประเมินผลสองภาษา) สำหรับการแปลในภาคผนวก D 3.
คำสั่งต่อไปนี้จะถอดเสียงคำพูดในไฟล์เสียงโดยใช้รุ่น turbo
:
whisper audio.flac audio.mp3 audio.wav --model turbo
การตั้งค่าเริ่มต้น (ซึ่งเลือกรุ่น turbo
) ทำงานได้ดีสำหรับการถอดเสียงภาษาอังกฤษ หากต้องการถอดเสียงไฟล์เสียงที่มีคำพูดที่ไม่ใช่ภาษาอังกฤษ คุณสามารถระบุภาษาโดยใช้ตัวเลือก --language
:
whisper japanese.wav --language Japanese
การเพิ่ม --task translate
จะแปลคำพูดเป็นภาษาอังกฤษ:
whisper japanese.wav --language Japanese --task translate
เรียกใช้สิ่งต่อไปนี้เพื่อดูตัวเลือกที่มีทั้งหมด:
whisper --help
ดู tokenizer.py สำหรับรายการภาษาที่มีทั้งหมด
การถอดความสามารถทำได้ภายใน Python:
import whisper
model = whisper . load_model ( "turbo" )
result = model . transcribe ( "audio.mp3" )
print ( result [ "text" ])
ภายใน เมธอด transcribe()
จะอ่านไฟล์ทั้งหมดและประมวลผลเสียงด้วยการเลื่อนหน้าต่าง 30 วินาที ดำเนินการคาดการณ์แบบเรียงลำดับต่อลำดับแบบอัตโนมัติในแต่ละหน้าต่าง
ด้านล่างนี้คือตัวอย่างการใช้งานของ whisper.detect_language()
และ whisper.decode()
ซึ่งให้การเข้าถึงแบบจำลองในระดับที่ต่ำกว่า
import whisper
model = whisper . load_model ( "turbo" )
# load audio and pad/trim it to fit 30 seconds
audio = whisper . load_audio ( "audio.mp3" )
audio = whisper . pad_or_trim ( audio )
# make log-Mel spectrogram and move to the same device as the model
mel = whisper . log_mel_spectrogram ( audio ). to ( model . device )
# detect the spoken language
_ , probs = model . detect_language ( mel )
print ( f"Detected language: { max ( probs , key = probs . get ) } " )
# decode the audio
options = whisper . DecodingOptions ()
result = whisper . decode ( model , mel , options )
# print the recognized text
print ( result . text )
กรุณาใช้ ? แสดงและบอกหมวดหมู่ในการสนทนาเพื่อแบ่งปันตัวอย่างการใช้งานเพิ่มเติมของ Whisper และส่วนขยายของบุคคลที่สาม เช่น การสาธิตเว็บ การทำงานร่วมกับเครื่องมืออื่นๆ พอร์ตสำหรับแพลตฟอร์มที่แตกต่างกัน เป็นต้น
รหัสและน้ำหนักโมเดลของ Whisper ได้รับการเผยแพร่ภายใต้ใบอนุญาต MIT ดูใบอนุญาตสำหรับรายละเอียดเพิ่มเติม