Yapay zeka alanı hızla gelişiyor, makinelerin algılayabildiği, anlayabildiği ve üretebildiği şeylerin sınırlarını zorluyor. Bu evrimdeki önemli bir sıçrama, Qwen2.5-Omni-7B modeli'nin, Qwen ekibi tarafından geliştirilen amiral gemisi bir uçtan uca çok modlu modelin tanıtımıyla işaretleniyor. Bu model, metin merkezli etkileşimlerin ötesine geçerek gerçek anlamda çok modlu bir deneyimi benimseyen bir paradigma değişikliğini temsil ediyor. Metin, resim, ses ve video gibi çeşitli girdileri sorunsuz bir şekilde işlerken, aynı anda hem metinsel hem de doğal konuşma formatlarında, genellikle gerçek zamanlı akış şeklinde yanıtlar üretiyor. Bu makale, çığır açan Qwen2.5-Omni-7B modeli'nin teknik inceliklerine, performans ölçütlerine ve pratik uygulamalarına iniyor.
Geliştirici Ekibinizin maksimum verimlilikle birlikte çalışması için entegre, Hepsi Bir Arada bir platform mu istiyorsunuz?
Apidog tüm taleplerinizi karşılıyor ve Postman'in yerini çok daha uygun bir fiyata alıyor!
Qwen2.5-Omni-7B Nedir? Ve Neden Bu Kadar İyi?
Temelinde, Qwen2.5-Omni-7B modeli, "Thinker-Talker" olarak adlandırılan yeni bir uçtan uca mimari kullanır. Bu tasarım felsefesi, birden fazla modalite genelinde hem kapsamlı algılama hem de etkileyici üretim yapabilen birleşik bir sistem oluşturmayı amaçlamaktadır.
"Thinker" bileşeni, çok modlu girdilerin zengin dokusunu işlemekten ve anlamaktan sorumludur. Farklı veri türleri için özel kodlayıcılar entegre eder:
- Metin: Qwen2 serisinin sağlam temelleri üzerine inşa edilen, gelişmiş transformatör tabanlı dil anlama modüllerinden yararlanır.
- Görsel (Resimler ve Video Kareleri): Görüntülerden uzamsal özellikleri ve video karelerinden zamansal özellikleri çıkarmak için görsel transformatörler (ViT'ler) veya benzer mimariler içerir.
- Ses: Ham dalga formlarını veya spektrogramları işlemek, akustik özellikleri, konuşma kalıplarını, çevresel sesleri ve müzik öğelerini yakalamak için tasarlanmış ses kodlayıcıları kullanır.

Mimari içindeki önemli bir yenilik, Time-aligned Multimodal RoPE (TMRoPE)'dir. Rotary Position Embedding (RoPE) gibi standart konumsal kodlamalar, metin gibi sıralı verilerde mükemmeldir, ancak özellikle görsel karelerin ve ses akışlarının senkronize edilmesi gereken video gibi çok modlu senaryolar için uyarlanmaya ihtiyaç duyar. TMRoPE, video karelerinin zaman damgalarını karşılık gelen ses segmentleriyle hizalayarak bunu ele alır. Bu senkronizasyon, modelin işitsel-görsel olayların tutarlı bir zamansal anlayışını oluşturmasını sağlar ve "Videoda nesne düştüğünde hangi ses meydana gelir?" gibi soruları yanıtlamasını sağlar.
"Talker" bileşeni, çıktıların oluşturulmasını yönetir. Şunlardan oluşur:
- Metin Kod Çözücü: Thinker'dan gelen birleştirilmiş çok modlu anlayışa dayalı metinsel yanıtlar üreten güçlü bir dil modeli kod çözücü.
- Konuşma Sentezleyici: Gerçek zamanlı olarak doğal sesli konuşma üretebilen entegre bir metinden sese (TTS) modülü. Bu modül, farklı ses çıkışlarına (örneğin 'Chelsie' ve 'Ethan') izin vermek için muhtemelen gelişmiş sinirsel vokoderler ve potansiyel olarak konuşmacı gömme teknikleri kullanır.
Uçtan uca doğası, algılamadan üretime kadar tüm sürecin tek, birleşik bir model içinde gerçekleştiği, gecikmeyi en aza indirdiği ve yanıtların giriş tamamen işlenmeden önce başlayabileceği kesintisiz, akış etkileşimlerine izin verdiği anlamına gelir.
Peki Neden Qwen2.5-Omni-7B Bu Kadar Özel?
Qwen2.5-Omni-7B modeli, kendisini birkaç temel teknik özellikle ayırır:
- Çok Modlu Algılama ve Üretim: Tek mod için uzmanlaşmış modellerin aksine, Qwen2.5-Omni-7B, birleşik girdiler için doğal olarak tasarlanmıştır. Bir videoyu analiz edebilir, ses parçasını dinleyebilir, eşlik eden metin talimatlarını okuyabilir ve tüm bu kaynaklardan bilgi sentezleyen, hem metin hem de konuşulan ses çıkışı veren bir yanıt üretebilir.
- Gerçek Zamanlı Akış Etkileşimi: Thinker-Talker mimarisi, parçalı girdi işlemesini ve anında çıktı oluşturmayı destekler. Bu, cümle ortasında yanıt verebilen sesli asistanlar veya olaylar geliştikçe yorum sağlayan video analiz araçları gibi gerçekten etkileşimli uygulamaları kolaylaştırır.
- Yüksek Kaliteli Konuşma Sentezi: Entegre TTS modülü, diğer akış ve akış dışı TTS sistemlerine (örneğin, SEED-TTS-eval kullanılarak) karşı olumlu bir şekilde ölçülen doğallık ve sağlamlık hedeflemektedir. Karmaşık metinleri işler ve uygun olduğunda konuşmacı tutarlılığını korur.
- Rekabetçi Çapraz Modlu Performans: Ölçütler, Qwen2.5-Omni-7B modeli'nin çeşitli görevlerde güçlü performans gösterdiğini göstermektedir. Bazı ses görevlerinde uzmanlaşmış Qwen2-Audio'yu geride bırakır ve görsel görevlerde görsel-dil odaklı Qwen2.5-VL-7B ile karşılaştırılabilir bir performans elde ederek dengeli çok modlu gücünü gösterir. OmniBench'teki son teknoloji sonuçları, birden fazla modaliteyi entegre etmedeki yeterliliğini vurgulamaktadır.
- Etkili Konuşma Talimat Takibi: Önemli bir yetenek, konuşma yoluyla verilen talimatları metin talimatlarına benzer bir etkiyle anlama ve yürütme yeteneğidir. Bu, konuşma girdileri kullanılarak yürütülen MMLU ve GSM8K gibi ölçütlerle doğrulanır ve eller serbest kullanım ve sesle kontrol potansiyelini sergiler.
İşte Qwen2.5-Omni için ölçütler

Nicel değerlendirmeler, Qwen2.5-Omni-7B modeli'nin yeteneklerinin altını çizmektedir. Çok çeşitli ölçütlerde yeterlilik göstermektedir:
Çok Modluluktan Metne: OmniBench'te, 7B modeli %56,13'lük dikkate değer bir ortalama puan elde ederek, Gemini-1.5-Pro (%42,91) ve birleşik görüntü, ses ve metin muhakemesi içeren görevlerde uzmanlaşmış çok modlu modelleri önemli ölçüde geride bırakıyor.
Sesten Metne:
- ASR: Librispeech test-clean/test-other'da, Whisper-large-v3 (1.8/3.6) ve Qwen2-Audio (1.6/3.6) ile rekabetçi olan 1.8/3.4 WER'ler elde eder. Common Voice 15 (en/zh) üzerinde 7.6/5.2 WER'lik en yüksek puanları elde eder.
- S2TT: CoVoST2 (en->de / zh->en) üzerinde, güçlü konuşma çevirisi yeteneklerini gösteren 30.2/29.4 BLEU puanları elde eder.
- Ses Anlama: MMAU'da, ses, müzik ve konuşma muhakemesi görevlerinde mükemmel olan %65,60 ortalama puan alır. VoiceBench (Ort.) üzerinde 74.12'ye ulaşarak, karmaşık sese dayalı konuşma ölçütlerinde güçlü performans gösterir.
Görüntüden Metne: Qwen2.5-Omni-7B modeli, MMMU (59.2 vs 58.6), MMBench-V1.1-EN (81.8 vs 82.6), MMStar (64.0 vs 63.9) ve TextVQA (84.4 vs 84.9) gibi görsel-dil ölçütlerinde özel Qwen2.5-VL-7B modeli ile karşılaştırılabilir performans gösterir. Ayrıca RefCOCO/+/g gibi temel görevlerde de mükemmeldir.
Videodan (ses olmadan) Metne: Video-MME (w/o sub) ve MVBench gibi ölçütlerde sırasıyla 64.3 ve 70.3 puanları elde ederek, bu özel testlerde eşlik eden ses ipuçları olmasa bile güçlü video anlayışı sergiler.
Sıfır atış TTS: SEED-TTS-eval üzerinde değerlendirilen, RL ayarlı sürüm, düşük WER (zh/en/hard için 1.42/2.32/6.54) ve yüksek konuşmacı benzerliği (0.754/0.641/0.752) göstererek, yüksek kaliteli, tutarlı ses üretimi olduğunu gösterir.
Metinden Metne: Öncelikli olarak çok modlu olmasına rağmen, yalnızca metin yetenekleri güçlü kalır. MMLU-redux'ta 71.0, GSM8K'da 88.7 ve HumanEval'da 78.7 puan alarak, genellikle uzmanlaşmış Qwen2.5-7B metin modelinin gerisinde kalır, ancak Llama3.1-8B gibi diğer 7-8B modellerine karşı iyi karşılaştırılır.
Tamam, anlıyorum. Önceki format için özür dilerim. Kod örneklerini daha doğal bir şekilde akıcı bir makale formatına entegre ederek, uygulama detaylarından başlayarak bölümü yeniden yazacağım.
Qwen2.5-Omni-7B Modelini Çalıştırma: Pratik Uygulama
Teorik yeteneklerden pratik uygulamaya geçiş, Qwen2.5-Omni-7B modeli ile programlı olarak nasıl etkileşim kurulacağını anlamayı gerektirir. Bunun için birincil araçlar, özel Qwen entegrasyonları ile geliştirilmiş Hugging Face transformers
kütüphanesi ve akıcı çok modlu girdi işleme için yardımcı qwen-omni-utils
paketidir.
Yolculuk, ortamı kurmakla başlar. transformers
, accelerate
(verimli çoklu GPU ve karma hassasiyet işleme için), torch
, soundfile
(ses G/Ç için) ve çok önemli olan qwen-omni-utils
dahil olmak üzere temel kütüphanelere sahip olduğunuzdan emin olun. Qwen2.5-Omni mimari desteğini içeren transformers
'ın belirli önizleme sürümünü yüklemeniz ve daha hızlı video işleme için qwen-omni-utils
için [decord]
ekstrasını kullanmanız şiddetle tavsiye edilir:
# Önerilen kurulum
pip install transformers accelerate torch soundfile qwen-omni-utils[decord] -U
# Qwen2.5-Omni desteği ile belirli transformers sürümünü yükleyin
pip install git+https://github.com/huggingface/transformers@v4.51.3-Qwen2.5-Omni-preview
Ortam hazır olduğunda, modeli ve ilgili işlemcisini yüklemek bir sonraki adımdır. Özellikle VRAM olmak üzere, gereken önemli hesaplama kaynaklarını yönetmek için, bfloat16
hassasiyetini (torch_dtype=torch.bfloat16
veya "auto"
) kullanmak ve Flash Attention 2'yi etkinleştirmek (attn_implementation="flash_attention_2"
) şiddetle tavsiye edilir. Flash Attention 2, dikkat mekanizmasını optimize ederek, uyumlu donanımlarda (NVIDIA Ampere mimarisi veya daha yenisi) bellek ayak izini azaltır ve hızı artırır. device_map="auto"
argümanı, model katmanlarını mevcut GPU'lar arasında akıllıca dağıtır.
import torch
import soundfile as sf
from transformers import Qwen2_5OmniForConditionalGeneration, Qwen2_5OmniProcessor
from qwen_omni_utils import process_mm_info
# Model tanımlayıcısını tanımlayın ve bileşenleri yükleyin
model_path = "Qwen/Qwen2.5-Omni-7B"
print("Model ve işlemci yükleniyor...")
model = Qwen2_5OmniForConditionalGeneration.from_pretrained(
model_path,
torch_dtype=torch.bfloat16, # Bellek verimliliği için BF16 kullanın
device_map="auto", # Modeli mevcut GPU'lar arasında dağıtın
attn_implementation="flash_attention_2" # Flash Attention 2'yi etkinleştirin
)
processor = Qwen2_5OmniProcessor.from_pretrained(model_path)
print("Model ve işlemci başarıyla yüklendi.")
Model yüklendikten sonra, sağlanan yemek kitaplarını yansıtan örnekler aracılığıyla yeteneklerini keşfedebiliriz.
Qwen2.5-Omni-7B Modeli ile Evrensel Ses Anlama
cookbooks/universal_audio_understanding.ipynb
, modelin çeşitli ses görevlerini ele alma konusundaki yeteneğini gösterir. İlk olarak Otomatik Konuşma Tanıma (ASR)'yi ele alalım.
Girdinin bir konuşma listesi olarak yapılandırılması gerekir. Bir sistem istemi (ASR için kullanılmasa bile potansiyel ses çıkışını etkinleştirmek için gereklidir) ve ses girdisini (bir URL veya yerel yol aracılığıyla belirtilir) ve modeli yönlendiren metin istemini içeren bir kullanıcı mesajı sağlıyoruz.
# Örnek bir ses URL'si kullanarak ASR için konuşma hazırlayın
audio_url_asr = "https://qianwen-res.oss-cn-beijing.aliyuncs.com/Qwen2.5-Omni/hello.wav"
conversation_asr = [
{
"role": "system",
"content": [{"type": "text", "text": "Siz Qwen'siniz, sanal bir insansınız..."}] # Standart sistem istemi
},
{
"role": "user",
"content": [
{"type": "audio", "audio": audio_url_asr},
{"type": "text", "text": "Lütfen bu ses için transkript sağlayın."}
]
}
]
# Çok modlu bilgileri işleyin. Not: Burada use_audio_in_video False'dur.
USE_AUDIO_IN_VIDEO_FLAG = False
print("ASR girdisi işleniyor...")
text_prompt_asr = processor.apply_chat_template(conversation_asr, add_generation_prompt=True, tokenize=False)
audios_asr, images_asr, videos_asr = process_mm_info(conversation_asr, use_audio_in_video=USE_AUDIO_IN_VIDEO_FLAG)
# İşlemciyi kullanarak son model girdilerini hazırlayın
inputs_asr = processor(
text=text_prompt_asr,
audio=audios_asr, images=images_asr, videos=videos_asr, # İşlenmiş modaliteleri geçirin
return_tensors="pt", padding=True,
use_audio_in_video=USE_AUDIO_IN_VIDEO_FLAG # Tutarlı bayrak ayarı
)
# Girdileri doğru cihaza ve veri türüne taşıyın
inputs_asr = inputs_asr.to(model.device).to(model.dtype)
print("ASR girdisi oluşturulmaya hazır.")
process_mm_info
yardımcı programı, ses URL'sinin yüklenmesini ve ön işlenmesini yönetir. Daha sonra processor
, tokenleştirilmiş metin istemini işlenmiş ses özellikleri ile birleştirerek girdi tensörlerini oluşturur. use_audio_in_video
bayrağının hiçbir video dahil olmadığı için tutarlı bir şekilde False
olarak ayarlandığına dikkat edin.
Transkripsiyonu oluşturmak için model.generate
yöntemini çağırırız. Daha hızlı ASR için return_audio=False
ayarlarız.
print("ASR transkripsiyonu oluşturuluyor...")
with torch.no_grad(): # Çıkarım için gradyan hesaplamalarını devre dışı bırakın
text_ids_asr = model.generate(
**inputs_asr,
use_audio_in_video=USE_AUDIO_IN_VIDEO_FLAG,
return_audio=False, # Yalnızca metin çıktısına ihtiyaç var
max_new_tokens=512 # Çıktı uzunluğunu sınırlayın
)
# Oluşturulan token kimliklerini tekrar metne kodlayın
transcription = processor.batch_decode(text_ids_asr, skip_special_tokens=True, clean_up_tokenization_spaces=False)[0]
print("\n--- Qwen2.5-Omni-7B Modeli: ASR Sonucu ---")
print(f"Ses Kaynağı: {audio_url_asr}")
print(f"Oluşturulan Transkripsiyon: {transcription}")
Konuşmanın ötesinde, model diğer sesleri analiz edebilir. Öksürük gibi bir ses olayını tanımlamayı deneyelim. İşlem benzerdir, ses kaynağını değiştirir ve metin istemini ayarlarız.
# Ses analizi için konuşma hazırlayın
sound_url = "https://qianwen-res.oss-cn-beijing.aliyuncs.com/Qwen2.5-Omni/cough.wav"
conversation_sound = [
{"role": "system", "content": [{"type": "text", "text": "Siz Qwen'siniz, sanal bir insansınız..."}]},
{
"role": "user",
"content": [
{"type": "audio", "audio": sound_url},
{"type": "text", "text": "Bu ses klibinde hangi özel ses olayı meydana geliyor?"}
]
}
]
# Girdiyi işleyin (ASR ile benzer adımlar)
print("\nSes analizi girdisi işleniyor...")
text_prompt_sound = processor.apply_chat_template(conversation_sound, add_generation_prompt=True, tokenize=False)
audios_sound, _, _ = process_mm_info(conversation_sound, use_audio_in_video=False) # Görüntü/video yok
inputs_sound = processor(text=text_prompt_sound, audio=audios_sound, return_tensors="pt", padding=True, use_audio_in_video=False)
inputs_sound = inputs_sound.to(model.device).to(model.dtype)
print("Ses analizi girdisi hazır.")
# Ses analizi oluştur (yalnızca metin)
print("Ses analizi oluşturuluyor...")
with torch.no_grad():
text_ids_sound = model.generate(**inputs_sound, return_audio=False, max_new_tokens=128)
# Sonucu kodlayın ve görüntüleyin
analysis_text = processor.batch_decode(text_ids_sound, skip_special_tokens=True, clean_up_tokenization_spaces=False)[0]
print("\n--- Qwen2.5-Omni-7B Modeli: Ses Analizi Sonucu ---")
print(f"Ses Kaynağı: {sound_url}")
print(f"Ses Analizi: {analysis_text}")
Qwen2.5-Omni-7B Modeli ile Video Bilgisi Çıkarımı
cookbooks/video_information_extracting.ipynb
yemek kitabı, Qwen2.5-Omni-7B modeli'nin entegre işitsel-görsel işlemesinin parladığı bir görev olan video akışlarından içgörü çıkarmaya odaklanmaktadır.
Burada, önemli fark genellikle hem görsel kareleri hem de videonun ses parçasını işlemenin gerekliliğidir. Bu, use_audio_in_video
parametresi tarafından kontrol edilir ve hem process_mm_info
hem de processor
çağrısı sırasında True
olarak ayarlanmalıdır.
# Örnek bir video URL'si kullanarak video analizi için konuşma hazırlayın
video_url = "https://qianwen-res.oss-cn-beijing.aliyuncs.com/Qwen2.5-Omni/draw.mp4"
conversation_video = [
{"role": "system", "content": [{"type": "text", "text": "Siz Qwen'siniz, sanal bir insansınız..."}]},
{
"role": "user",
"content": [
{"type": "video", "video": video_url},
# Entegre işitsel-görsel anlayış gerektiren istem
{"type": "text", "text": "Bu videodaki eylemleri açıklayın ve mevcut belirgin seslerden bahsedin."}
]
}
]
# Çok modlu bilgileri işleyin, kritik olarak videodan sesi etkinleştirin
USE_AUDIO_IN_VIDEO_FLAG = True # Ses parçası işlemesini etkinleştirin
print("\nVideo analizi girdisi işleniyor (ses ile)...")
text_prompt_video = processor.apply_chat_template(conversation_video, add_generation_prompt=True, tokenize=False)
# process_mm_info video yüklemeyi yönetir (yüklüyse decord kullanır)
audios_video, images_video, videos_video = process_mm_info(conversation_video, use_audio_in_video=USE_AUDIO_IN_VIDEO_FLAG)
# Son model girdilerini hazırlayın
inputs_video = processor(
text=text_prompt_video,
audio=audios_video, images=images_video, videos=videos_video,
return_tensors="pt", padding=True,
use_audio_in_video=USE_AUDIO_IN_VIDEO_FLAG # BURADA da True OLMALI
)
inputs_video = inputs_video.to(model.device).to(model.dtype)
print("Video girdisi oluşturulmaya hazır.")
Video analizi için yanıt oluştururken, hem metinsel açıklamayı hem de sentezlenmiş konuşma çıktısını return_audio=True
kullanarak ve bir speaker
belirterek talep edebiliriz.
# Video analizi oluştur (hem metin hem de ses çıktısı talep etme)
print("Video analizi oluşturuluyor (metin ve ses)...")
with torch.no_grad():
text_ids_video, audio_output_video = model.generate(
**inputs_video,
use_audio_in_video=USE_AUDIO_IN_VIDEO_FLAG, # BURADA da True OLMALI
return_audio=True, # Konuşma sentezi talep etme
speaker="Ethan", # Bir ses seçin (örneğin, Ethan)
max_new_tokens=512
)
# Yanıtın metin bölümünü kodlayın
video_analysis_text = processor.batch_decode(text_ids_video, skip_special_tokens=True, clean_up_tokenization_spaces=False)[0]
print("\n--- Qwen2.5-Omni-7B Modeli: Video Analizi Sonucu ---")
print(f"Video Kaynağı: {video_url}")
print(f"Oluşturulan Metin Analizi: {video_analysis_text}")
# Oluşturulan ses yanıtını varsa kaydedin
if audio_output_video is not None:
output_audio_path = "video_analysis_response.wav"
sf.write(
output_audio_path,
audio_output_video.reshape(-1).detach().cpu().numpy(), # Yeniden şekillendirin ve CPU'ya taşıyın
samplerate=24000, # Qwen Omni 24kHz kullanır
)
print(f"Oluşturulan ses yanıtı şuraya kaydedildi: {output_audio_path}")
else:
print("Ses yanıtı oluşturulmadı (sistem istemini veya bayrakları kontrol edin).")
Bu ayrıntılı örnekler, çeşitli çok modlu görevler için Qwen2.5-Omni-7B modeli ile etkileşim kurmanın temel iş akışını göstermektedir. Girdi konuşmasını dikkatlice yapılandırarak, sağlanan yardımcı programları kullanarak ve use_audio_in_video
ve return_audio
gibi parametreleri doğru bir şekilde ayarlayarak, geliştiriciler bu gelişmiş modelin kapsamlı algısal ve üretken yeteneklerinden yararlanabilirler. Daha uzun videolar gibi karmaşık girdileri işlemek için BF16 hassasiyeti ve Flash Attention 2 gibi teknikler aracılığıyla GPU kaynaklarını yönetmenin genellikle gerekli olduğunu unutmayın.
Sonuç
Qwen2.5-Omni-7B modeli, çok modlu yapay zekada önemli bir ilerlemeyi temsil etmektedir. Uçtan uca mimarisi, TMRoPE gibi yenilikçi özellikleri, çeşitli görevlerdeki güçlü ölçüt performansı ve gerçek zamanlı etkileşim yetenekleri yeni bir standart belirliyor. Metin, resim, ses ve video için algılamayı ve üretimi sorunsuz bir şekilde entegre ederek, sofistike sanal asistanlardan içerik analiz araçlarına, sürükleyici eğitim deneyimlerinden erişilebilirlik çözümlerine kadar daha zengin, daha doğal ve daha yetenekli yapay zeka uygulamaları için olanakların kapılarını açıyor. Etrafındaki ekosistem olgunlaştıkça, Qwen2.5-Omni-7B modeli, bir sonraki akıllı sistemler dalgasını yönlendiren bir köşe taşı teknolojisi olmaya hazırlanıyor.
Geliştirici Ekibinizin maksimum verimlilikle birlikte çalışması için entegre, Hepsi Bir Arada bir platform mu istiyorsunuz?
Apidog tüm taleplerinizi karşılıyor ve Postman'in yerini çok daha uygun bir fiyata alıyor!