Türkçe konuşmayı tarayıcıda yazıya döker, altyazıyı videonun içine yazar.
Ses ve video bilgisayarından çıkmaz.
Turkish speech-to-text and styled video captions, right in your browser.
Transcribe files or live audio, add punctuation, and export captioned videos — all processed locally.
WebGPU · Türkçe · Lokal İşleme · Altyazı Stilleri · Canlı Mikrofon
harfiyen.dev · Hızlı başlangıç · Özellikler · Kullanım · Yapılacaklar
screenrecord.mp4
Harfiyen, seda-v0.1 Türkçe konuşma tanıma modelini doğrudan tarayıcıda, ekran kartı üzerinde (WebGPU) çalıştırır. Daha yüksek doğruluk için Whisper large-v3 turbo da seçilebilir. Bir video ya da ses dosyası yüklersin, kelimeler zaman kodlarıyla belirir, istediğin altyazı stilini seçersin ve altyazılı videoyu indirirsin. Mikrofonla konuşurken de canlı çalışır.
- Video ve ses dosyaları: MP4, MOV, MKV, WebM, MP3, M4A, WAV, FLAC, OGG. Uzun dosyaları parça parça işler, bellek şişmez.
- Canlı mikrofon: kelimeler konuştuktan yaklaşık bir saniye sonra belirir, kayıt aynı anda saklanır.
- İki model, üst çubuktan seçilir:
- Seda (varsayılan, ~105 MB): küçük ve hızlı, canlı mikrofonda ve her cihazda çalışır. Üç doğruluk ayarı var: Hızlı, Dengeli ve dil modeliyle En doğru.
- Whisper Turbo (~1,5 GB) ve Whisper Turbo Hafif (~600 MB, 4 bit encoder): daha az hata,
noktalamayı, büyük harfleri ve rakamları kendisi yazar. Hafif sürüm zor seste biraz daha fazla hata
yapabilir. Yalnızca dosyalarda ve ekran kartında (WebGPU,
shader-f16) çalışır; sesi 30 saniyelik parçalar hâlinde işler. Sessiz bölümlerde metin uydurmaması için ses etkinliği algılayıcı (Silero VAD) kullanır.
- Otomatik noktalama ve büyük harf: döküm bitince nokta, virgül ve soru işareti eklenir; cümle başları ve özel adlar büyük harfle yazılır. Türkçe özel ad ekleri için kesme işareti eklenir ("İstanbul'da", "Van Gölü'nün"); yapım ve çokluk ekleri TDK'ya göre ayrılmaz ("İstanbullu", "Ahmetler"). Kelime zamanları korunur; işlem ⌘Z / Ctrl+Z ile geri alınabilir.
- Kelime düzeyinde zaman: bir kelimeye tıkla, kayıt o ana atlasın; çalarken konuşulan kelime vurgulanır.
- Düzenleme: satıra çift tıkla ve düzelt, satırı sil, ⌘Z ile geri al. Değişmeyen kelimelerin zamanları korunur.
- Bul ve değiştir (⌘F / Ctrl+F): yanlış tanınan bir kelimeyi ya da ismi bütün transkriptte düzelt. Büyük/küçük harfe bakmaz, istenirse yalnızca tam kelimeleri bulur.
- SRT ve VTT açma: hazır altyazı açılıp stillendirilir ve videoya yazılır. Satırlar ve zamanlar korunur; düzeltilen altyazı aynı satırlarla yeniden indirilebilir. UTF-8 dışında Windows-1254 kodlu dosyalar da okunur.
- Beş stil: Klasik, Karaoke (söylenen kelimeler belirginleşir), Vurgu (konuşulan kelime renkli kutuda), Pop (ortada iri, zıplayan kelimeler), Sade.
- Sekiz yazı tipi, hepsi Türkçe karakterlerin tamamıyla: Google Sans Flex, Montserrat, Poppins, Inter, Anton, Bebas Neue, Schibsted Grotesk, Literata.
- Boyut, konum, zemin (kutu, kontur, gölge), yazı ve vurgu rengi, Türkçe kurallarına uygun büyük harf (i → İ).
- WebGPU oynatıcı: önizlemede gördüğün, dışa aktarılan videonun birebir aynısıdır.
- Altyazılı MP4: kareler ekran kartında birleştirilir, video donanımla H.264 kodlanır, ses kopyalanır.
- Ses dosyaları ve kayıtlar için aura: sesle hareket eden yumuşak bir gradyan ve sakin bir ses görselleştirmesi. Bunlar da altyazılı 1080p MP4 olarak dışa aktarılabilir.
- SRT, WebVTT, düz metin, kelime zamanlı JSON ve panoya kopyalama.
- Transkript, EMA Lightning ya da Antalia Mini ile yapay bir Türkçe sesle yeniden okunur. Her altyazı satırı kendi zamanında başlar; yerine sığmayan satır en fazla 1,35 kat hızlı okunur.
- Ses tonu yarım ton adımlarla kalınlaştırılıp inceltilebilir; satırların süresi değişmez. Seed aynı sesi farklı bir vurguyla okutur. Ayarlar seslendirmeden önce ilk satırla dinlenebilir.
- Açıkken oynatıcı ve altyazılı MP4 orijinal ses yerine yapay sesi kullanır. Ses ayrıca WAV olarak indirilebilir. Modeller ilk kullanımda indirilir: EMA Lightning yaklaşık 36 MB, Antalia Mini 23 MB.
- Otomatik kayıt: transkript, düzeltmeler, altyazı stili ve dalga formu tarayıcıda (IndexedDB) saklanır; sekme kapansa da kaybolmaz.
- Son projeler Projeler menüsünde ve boş ekranda listelenir; tek tıkla model yeniden çalışmadan açılır. Projeler yeniden adlandırılabilir ve silinebilir.
- Medya kopyalanmadan bağlanır: Chrome ve Edge dosyanın kendisine erişim izni saklar, diğer tarayıcılar 1 GB'a kadar dosyaların kopyasını tutar. Tarayıcı izin isterse ya da dosya bulunamazsa tek düğmeyle yeniden bağlanır; kelime zamanları korunur.
- .harfiyen proje dosyası: projeyi dosya olarak indir, başka zaman ya da başka tarayıcıda aç. Medya dosyası içine eklenmez, açarken bir kez seçilir.
Konuşma tanıma modeli küçük harfli, noktalamasız metin üretir; noktalama ve büyük harf ayrı bir modelle sonradan eklenir. Sayılar yazıyla kalır ("bin dokuz yüz yirmi üç").
Gerekenler: Node.js 20+, Python 3.10+ (yalnızca modeli bir kez hazırlamak için) ve WebGPU destekli bir tarayıcı (masaüstü Chrome veya Edge önerilir).
npm install
python3 -m pip install -r scripts/requirements.txt
npm run models # konuşma tanıma ve noktalama modellerini indirir ve tarayıcı için dönüştürür (bir kez, Whisper dahil ~2 GB)
npm run dev # http://localhost:5173İlk açılışta tarayıcı yaklaşık 105 MB indirir (Seda ve ONNX Runtime) ve saklar; sonraki açılışlar önbellekten, internetsiz çalışır. Whisper Turbo seçilirse ilk dosyada ayrıca yaklaşık 1,5 GB (Hafif: 600 MB) indirilir. Noktalama ilk kullanıldığında ayrıca yaklaşık 60 MB indirilir ve önbelleğe alınır. Ses ve metin işlenmek için sunucuya gönderilmez.
Mikrofon, WebGPU ve çok iş parçacıklı WASM yalnızca güvenli bağlamda çalışır; localhost güvenli
sayılır ama http://192.168.x.x sayılmaz. Yerel bir sertifika üret, geliştirme sunucusu .cert/
klasörünü görünce kendiliğinden HTTPS ile ağa açılır (klasör git'e girmez):
mkcert -install
mkdir -p .cert
mkcert -cert-file .cert/dev.pem -key-file .cert/dev-key.pem localhost 127.0.0.1 <bilgisayarın-yerel-IP'si>
npm run dev # https://<bilgisayarın-yerel-IP'si>:5173Telefonda uyarısız açılması için mkcert -CAROOT klasöründeki rootCA.pem dosyasını cihaza yükleyip
güvenilir yap (iOS: Ayarlar → Genel → Hakkında → Sertifika Güven Ayarları).
| İşlem | Nasıl yapılır |
|---|---|
| Dosya açmak | Dosya aç ya da dosyayı pencereye sürükle |
| Mikrofonla kayıt | Alttaki kırmızı düğme ya da R |
| Oynat / duraklat | Boşluk ya da görüntüye tıkla |
| 5 sn geri / ileri | ← / → |
| Tam ekran | F ya da görüntüye çift tıkla |
| Satırı düzenlemek | Satıra çift tıkla, Enter kaydeder, Esc vazgeçer |
| Geri al | ⌘Z / Ctrl+Z |
| Otomatik noktalama | Sağ panelde Noktalama ve büyük harf → Otomatik ekle (varsayılan açık; tercih saklanır) |
| Noktalamayı elle uygulamak | Döküm bitince aynı bölümde Şimdi uygula |
| Dışa aktarmak | Sağ üstte Dışa aktar |
| Kayıtlı projeyi açmak | Projeler menüsü ya da boş ekrandaki Son projeler |
| Proje adını değiştirmek | Üstteki proje adına tıkla, Enter kaydeder, Esc vazgeçer |
| Proje dosyası | Projeler → Projeyi dosya olarak indir; açmak için Dosya aç ya da sürükle-bırak |
Apple Silicon (Metal), Chrome, dil modeliyle beam search:
| İşlem | Ölçüm |
|---|---|
| Yazıya döküm | gerçek zamanın ~12 katı (encoder ~38 ms / 0,64 sn'lik parça) |
| Videoya altyazı yazma | 640×360 videoda ~70 kare/sn; sesten 1080p video ~3 kat gerçek zaman |
| İlk açılış | ~105 MB indirme, sonrası önbellekten |
| İlk noktalama kullanımı | ek ~60 MB indirme, sonrası önbellekten |
Ölçümler kısa test kayıtlarıyla yapıldı; uzun ve yüksek çözünürlüklü dosyalarda farklı olabilir.
Model kartındaki doğruluk değerleri (WER, düşük olan iyi):
| Test seti | Hızlı | Dengeli | En doğru |
|---|---|---|---|
| FLEURS-TR | 15,14 | 14,24 | 11,52 |
| Common Voice 27.0 TR | 16,32 | 15,59 | 13,61 |
| ISSAI TSC | 16,00 | 15,72 | 15,23 |
npm run build sonrası dist/ herhangi bir statik sunucudan yayınlanabilir. Gerekli başlıklar ve Cloudflare
Pages + R2 kurulumu için docs/DEPLOY.md.
Uygulama bir web manifest'i ile gelir; Chrome ve Edge'de adres çubuğundan masaüstü uygulaması olarak kurulabilir.
npm run typecheck # TypeScript kontrolü
npm run test:whisper -- kayit.wav # Whisper motorunu Node'da dener (16 bit WAV)
npm run test:turkish # Türkçe yazım kurallarını dener (model gerekmez)
npm run eval:punct # noktalamayı Vikipedi metniyle ölçer (puan verir, model gerekir)
npm run build # üretim derlemesi
npm run preview # derlemeyi lokalinde önizleArayüz Tailwind CSS v4 ile yazılır (@tailwindcss/vite eklentisi):
src/index.css: Tailwind'in giriş dosyası. Preflight (sıfırlama stilleri) kullanılmaz; tasarım değişkenleri@themeile Tailwind'e bağlanır (bg-pane,text-fg-2,border-line,bg-cini,text-firuze,rounded-ui...). Animasyonlar ve kaydırıcı / anahtar stilleri de buradadır.src/styles.css: renk ve yazı tipi değişkenleri ile temel eleman stilleri.src/components/ui.tsx,Menu.tsx,Dropzone.tsx,Indicators.tsx: ortak bileşenler (düğmeler, paneller, form satırları, açılır menüler).
- Altyazılı video şimdilik bellekte oluşturulup indiriliyor; çok uzun videolarda bellek yetmeyebilir.
- Düzenleme metinle sınırlı; kelime zamanlarını elle kaydırmak yok.
- Seslendirmede her modelin tek sesi var ve orijinal sesin tamamı (müzik, ortam sesi) kalkar. Konuşmacılar ayrılmaz, dudak hareketleriyle eşleşmez. Seslendirme projeye kaydedilmez.
- Ses dosyalarından üretilen MP4'te ses AAC ile kodlanır; tarayıcı AAC kodlayamıyorsa Opus kullanılır. Opus'lu MP4'ü QuickTime ve iPhone Fotoğraflar açmayabilir (Chrome, VLC ve sosyal platformlar açar).
Önerilen öncelik sırasıyla:
- Projeyi kaydetme ve geri açma: transkript ve düzeltmeler için otomatik yerel kayıt; projeyi dosya olarak indirip yeniden açma.
- Kelime zamanlarını düzenleme: başlangıç ve bitiş zamanlarını değiştirme; tüm altyazıya toplu zaman kaydırma.
- Uzun video dışa aktarma: büyük çıktıları belleği tüketmeden doğrudan diske yazma.
- Noktalama için Türkçe testleri: özel ad ekleri, birleşik adlar, soru cümleleri ve tekrar uygulama; Vikipedi metniyle kesme işareti, büyük harf ve noktalama ölçümü.
- Sayıları rakama çevirme seçeneği: "bin dokuz yüz yirmi üç" → "1923"; tarih, saat ve para ifadeleri için açılıp kapatılabilen dönüşüm.
- Transkriptte bul ve değiştir: yanlış tanınan bir kelimeyi veya ismi bütün kayıtta düzeltme.
- SRT / VTT içe aktarma: hazır altyazıyı açıp stillendirme ve videoya yazma.
- Konuşma tanıma modeli atasoglu/seda-v0.1: Apache-2.0.
- openai/whisper-large-v3-turbo (MIT), ONNX sürümü onnx-community; kelime zamanlama openai-whisper'dan (MIT) uyarlandı.
- Silero VAD v5: MIT.
- Seslendirme modeli canberkkkkkk/ema-lightning: Apache-2.0; metin normalleştirme normalizer-tr (Apache-2.0).
- İkinci seslendirme modeli Antalia-2 Mini, Patientdesk.ai,
cloud0day3/antalia-mini: Apache-2.0 (kod, metin işleme ve
ağırlıklar).
src/tts/antalia-mini/altındaki iki dosya modelin Space'inden değiştirilmeden alındı. - Dil modeli dosyaları (
rnnlm,2gram): CC BY-SA 4.0 (Türkçe Vikipedi üzerinde eğitildi). - Noktalama ölçüm metinleri (
tests/data/): Türkçe Vikipedi, CC BY-SA 4.0; kaynak makaleler dosyalarda. - Algoritmalar sherpa-onnx'ten (Apache-2.0) uyarlandı.
- ONNX Runtime Web (MIT), mediabunny (MPL-2.0), React (MIT), Tailwind CSS (MIT).
- Yazı tipleri: SIL Open Font License 1.1.
