# Audio-Course

## Docs

- [Uçtan uca ses üretimi](https://huggingface.co/learn/audio-course/tr/chapter2/tts_pipeline.md)
- [Uçtan uca ses sınıflandırması](https://huggingface.co/learn/audio-course/tr/chapter2/audio_classification_pipeline.md)
- [İşlem hattıyla otomatik konuşma tanıma](https://huggingface.co/learn/audio-course/tr/chapter2/asr_pipeline.md)
- [Ünite 2. Ses uygulamalarına nazik bir giriş](https://huggingface.co/learn/audio-course/tr/chapter2/introduction.md)
- [Uygulamalı eğitim egzersizleri](https://huggingface.co/learn/audio-course/tr/chapter2/hands_on.md)
- [Topluluğa katılın!](https://huggingface.co/learn/audio-course/tr/chapter0/community.md)
- [Hugging Face Sesle Makine Öğrenmesi Kursuna Hoş Geldiniz!](https://huggingface.co/learn/audio-course/tr/chapter0/introduction.md)
- [Kursa katılmaya hazırlanın](https://huggingface.co/learn/audio-course/tr/chapter0/get_ready.md)
- [Ses verilerine giriş](https://huggingface.co/learn/audio-course/tr/chapter1/audio_data.md)
- [Ses veri kümesini ön işleme](https://huggingface.co/learn/audio-course/tr/chapter1/preprocessing.md)
- [Daha fazla öğren](https://huggingface.co/learn/audio-course/tr/chapter1/supplemental_reading.md)
- [Kurs materyalini anladığınızı kontrol edin](https://huggingface.co/learn/audio-course/tr/chapter1/quiz.md)
- [1.Ünite Ses verileriyle çalışma](https://huggingface.co/learn/audio-course/tr/chapter1/introduction.md)
- [Ses verileri akışı](https://huggingface.co/learn/audio-course/tr/chapter1/streaming.md)
- [Bir ses veri kümesini yükleyin ve keşfedin](https://huggingface.co/learn/audio-course/tr/chapter1/load_and_explore.md)

### Uçtan uca ses üretimi
https://huggingface.co/learn/audio-course/tr/chapter2/tts_pipeline.md

# Uçtan uca ses üretimi


Ses üretimi, bir ses çıktısı üretmeyi içeren çok yönlü bir dizi görevi kapsar. Burada inceleyeceğimiz görevler, konuşma üretimi (yani "metinden sese" dönüşüm) ve müzik üretimi olarak özetlenebilir. Metinden sese dönüşümde, bir model metin bir parçasını gerçekçi konuşulan dil sesine dönüştürür, bu da sanal asistanlar, görme engelli kullanıcılar için erişilebilirlik araçları ve kişiselleştirilmiş sesli kitaplar gibi uygulamaların kapısını açar. Öte yandan, müzik üretimi yaratıcı ifadeyi mümkün kılabilir ve genellikle eğlence ve oyun geliştirme endüstrilerinde kullanılır.

🤗 Transformers içinde, bu görevleri kapsayan bir iş akışı bulacaksınız. Bu iş akışına "text-to-audio" adı verilir, ancak kullanım kolaylığı için "text-to-speech" takma adı da bulunur. Burada her ikisini de kullanacağız ve göreviniz için daha uygun olanı seçebilirsiniz.

Sadece birkaç satır kodla metinler ve müzik için sesli anlatım oluşturmaya başlamak için bu hattı nasıl kullanabileceğinizi keşfedelim.

Bu işlem hattı 🤗 Transformers'ta yenidir ve 4.32 sürümünün bir parçası olarak gelir. Bu nedenle, özelliği edinmek için kitaplığı en son sürüme yükseltmeniz gerekir:

```bash
pip install --upgrade transformers
```

## Konuşma oluşturmak

Metinden konuşmaya oluşturmayı keşfederek başlayalım. İlk olarak, ses sınıflandırması ve otomatik konuşma tanımada olduğu gibi, boru hattını tanımlamamız gerekecek. Görevimizi en iyi şekilde tanımladığı için bir metinden konuşmaya ardışık düzen tanımlayacağız ve [`suno/bark-small`](https://huggingface.co/suno/bark-small) kontrol noktasını kullanacağız:

```python
from transformers import pipeline

pipe = pipeline("text-to-speech", model="suno/bark-small")
```

Bir sonraki adım, bir metni boru hattından geçirmek kadar basittir. Tüm ön işlemler bizim için başlık altında yapılacaktır:

```python
text = "Ladybugs have had important roles in culture and religion, being associated with luck, love, fertility and prophecy. "
output = pipe(text)
```

Bir not defterinde sonucu dinlemek için aşağıdaki kod parçacığını kullanabiliriz:

```python
from IPython.display import Audio

Audio(output["audio"], rate=output["sampling_rate"])
```

Pipeline ile kullandığımız model Bark aslında çok dillidir, dolayısıyla ilk metni kolayca örneğin Fransızca bir metinle değiştirebiliriz ve boru hattını tamamen aynı şekilde kullanabiliriz. Dili tek başına anlayacaktır:

```python
fr_text = "Contrairement à une idée répandue, le nombre de points sur les élytres d'une coccinelle ne correspond pas à son âge, ni en nombre d'années, ni en nombre de mois. "
output = pipe(fr_text)
Audio(output["audio"], rate=output["sampling_rate"])
```

Bu model sadece çok dilli olmakla kalmıyor, aynı zamanda sözsüz iletişim ve şarkı söyleme yoluyla da ses üretebiliyor. Şarkı söylemesini şu şekilde sağlayabilirsiniz:

```python
song = "♪ In the jungle, the mighty jungle, the ladybug was seen. ♪ "
output = pipe(song)
Audio(output["audio"], rate=output["sampling_rate"])
```

Metinden konuşmaya ayrılan sonraki ünitede Bark'ın ayrıntılarına daha derinlemesine gireceğiz ve ayrıca bu görev için diğer modelleri nasıl kullanabileceğinizi de göstereceğiz. Şimdi biraz müzik üretelim!

## Müzik oluşturma

Daha önce olduğu gibi, bir işlem hattı oluşturarak başlayacağız. Müzik üretimi için metinden sese bir ardışık düzen tanımlayacağız ve bunu önceden eğitilmiş kontrol noktasıyla [`facebook/musicgen-small`](https://huggingface.co/facebook/musicgen-small) başlatacağız.

```python
music_pipe = pipeline("text-to-audio", model="facebook/musicgen-small")
```

Oluşturmak istediğimiz müziğin metin açıklamasını oluşturalım:

```python
text = "90s rock song with electric guitar and heavy drums"
```

Modele ek bir 'max_new_tokens' parametresi ileterek oluşturulan çıktının uzunluğunu kontrol edebiliriz.

```python
forward_params = {"max_new_tokens": 512}

output = music_pipe(text, forward_params=forward_params)
Audio(output["audio"][0], rate=output["sampling_rate"])
```


<EditOnGithub source="https://github.com/huggingface/audio-transformers-course/blob/main/chapters/tr/chapter2/tts_pipeline.mdx" />

### Uçtan uca ses sınıflandırması
https://huggingface.co/learn/audio-course/tr/chapter2/audio_classification_pipeline.md

# Uçtan uca ses sınıflandırması


Ses sınıflandırması, içeriğine göre bir ses kaydına bir veya daha fazla etiket atamayı içerir. Etiketler müzik, konuşma veya gürültü gibi farklı ses kategorilerine veya kuş şarkısı veya araba motoru sesleri gibi daha spesifik kategorilere karşılık gelebilir.

En popüler ses transformatörlerinin nasıl çalıştığına dair ayrıntılara dalmadan ve özel bir modele ince ayar yapmadan önce, yalnızca birkaç satır kodla ses sınıflandırması için kullanıma hazır, önceden eğitilmiş bir modeli nasıl kullanabileceğinizi görelim. Transformatörler.



Hadi devam edelim ve önceki ünitede keşfettiğiniz aynı [MINDS-14](https://huggingface.co/datasets/PolyAI/minds14) veri kümesini kullanalım. Hatırlarsanız MINDS-14, e-bankacılık sistemine soru soran kişilerin çeşitli dil ve lehçelerdeki kayıtlarını içeriyor ve her kayıt için bir “intent_class”a sahip. Kayıtları çağrının amacına göre sınıflandırabiliriz.

Daha önce olduğu gibi, boru hattını denemek için verinin "en-AU" alt kümesini yükleyerek başlayalım ve bunu çoğu konuşma modelinin gerektirdiği 16kHz örnekleme hızına örnekleyelim.

```py
from datasets import load_dataset
from datasets import Audio

minds = load_dataset("PolyAI/minds14", name="en-AU", split="train")
minds = minds.cast_column("audio", Audio(sampling_rate=16_000))
```


Bir ses kaydını bir dizi sınıfa sınıflandırmak için 🤗 Transformers'ın audio-classification (ses sınıflandırma) iş akışını kullanabiliriz. Bizim durumumuzda, amaç sınıflandırması için ince ayar yapılmış bir modele ihtiyacımız var ve özellikle MINDS-14 veri kümesinde ince ayar yapılmış bir modele ihtiyacımız var. Neyse ki, Hub'da tam olarak bu işi yapan bir model bulunuyor! Onu pipeline() işlevini kullanarak yükleyelim:

```py
from transformers import pipeline

classifier = pipeline(
    "audio-classification",
    model="anton-l/xtreme_s_xlsr_300m_minds14",
)
```

Bu ardışık düzen, ses verilerinin bir NumPy dizisi olmasını bekler. Ham ses verilerinin tüm ön işlemleri bizim için boru hattı tarafından uygun bir şekilde gerçekleştirilecektir. Denemek için bir örnek seçelim:

```py
example = minds[0]
```

Veri kümesinin yapısını hatırlarsanız, ham ses verileri `["audio"]["array"]` altında bir NumPy dizisinde saklanır, hadi bunu doğrudan `sınıflandırıcıya' aktaralım:

```py
classifier(example["audio"]["array"])
```

**Çıktı:**
```out
[
    {"score": 0.9631525278091431, "label": "pay_bill"},
    {"score": 0.02819698303937912, "label": "freeze"},
    {"score": 0.0032787492964416742, "label": "card_issues"},
    {"score": 0.0019414445850998163, "label": "abroad"},
    {"score": 0.0008378693601116538, "label": "high_value_payment"},
]
```

Model, arayan kişinin faturasını ödemeyi öğrenmek istediğinden oldukça emin. Bu örnek için gerçek etiketin ne olduğunu görelim:

```py
id2label = minds.features["intent_class"].int2str
id2label(example["intent_class"])
```

**Çıktı:**
```out
"pay_bill"
```

Harika! Tahmin edilen etiket doğruydu! Burada, ihtiyacımız olan kesin etiketleri sınıflandırabilen bir model bulmak şanslıydık. Sınıflandırma görevi ile uğraşırken, bir önceden eğitilmiş modelin sınıf kümesinin tam olarak modelin ayırt etmesini istediğiniz sınıflarla aynı olmadığı birçok durum vardır. Bu durumda, bir önceden eğitilmiş modeli tam olarak sınıf etiketleriniz kümesine "ayarlamak" için ince ayar yapabilirsiniz. Bu işlemi gelecek ünitelerde nasıl yapacağımızı öğreneceğiz. Şimdi, konuşma işleme alanında yaygın bir başka görev olan otomatik konuşma tanıma görevine bir göz atalım.


<EditOnGithub source="https://github.com/huggingface/audio-transformers-course/blob/main/chapters/tr/chapter2/audio_classification_pipeline.mdx" />

### İşlem hattıyla otomatik konuşma tanıma
https://huggingface.co/learn/audio-course/tr/chapter2/asr_pipeline.md

# İşlem hattıyla otomatik konuşma tanıma

Otomatik Konuşma Tanıma (ASR), konuşma sesi kaydının metne dönüştürülmesini içeren bir görevdir.
Bu görevin, videolar için altyazı oluşturmaktan sesli komutları etkinleştirmeye kadar çok sayıda pratik uygulaması vardır.
Siri ve Alexa gibi sanal asistanlar için.

Bu bölümde, bir kişinin ses kaydını metne dönüştürmek için "otomatik konuşma tanıma" hattını kullanacağız
Daha önce olduğu gibi aynı MINDS-14 veri setini kullanarak fatura ödemeyle ilgili bir soru sormak.

Başlamak için veri kümesini yükleyin ve [Bir boru hattıyla ses sınıflandırması](audio_classification_pipeline) bölümünde açıklandığı gibi 16 kHz'e örnekleyin.
eğer bunu henüz yapmadıysanız.

Bir ses kaydını transkript etmek için 🤗 Transformers'ın automatic-speech-recognition (otomatik konuşma tanıma) iş akışını kullanabiliriz. İşte bu iş akışını oluşturalım:

```py
from transformers import pipeline

asr = pipeline("automatic-speech-recognition")
```

Daha sonra veri kümesinden bir örnek alıp ham verilerini ardışık düzene aktaracağız:

```py
example = minds[0]
asr(example["audio"]["array"])
```

**Çıktı:**
```out
{"text": "ELEKTRİK FATURAMI KODUMLA ÖDEMEK İSTİYORUM LÜTFEN YARDIMCI OLABİLİR MİSİNİZ?"}
```

Bu çıktıyı, bu örneğin gerçek transkripsiyonuyla karşılaştıralım:

```py
example["english_transcription"]
```

**Çıktı:**
```out
"Elektrik faturamı kartımla ödemek istiyorum lütfen yardımcı olur musunuz?"
```

Model, sesi transkribe etmede oldukça iyi bir iş çıkarmış gibi görünüyor! Orijinal transkriptle karşılaştırıldığında sadece bir kelimeyi ("card") yanlış almış, bu da konuşmacının sıklıkla "r" harfini sessiz olarak söylediği Avustralya aksanını düşünürsek oldukça iyi bir sonuç. Bununla birlikte, bir sonraki elektrik faturanızı bir balıkla ödemeyi denemenizi tavsiye etmem!

Varsayılan olarak, bu işlem hattı İngilizce için otomatik konuşma tanıma için eğitilmiş bir model kullanır;
bu örnek. MINDS-14'ün diğer alt kümelerini farklı dillerde yazmayı denemek isterseniz, önceden eğitilmiş bir kaynak bulabilirsiniz.
ASR modeli [🤗 Hub'da](https://huggingface.co/models?pipeline_tag=automatic-speech-recognition&language=fr&sort=downloads).
Model listesini önce göreve, ardından dile göre filtreleyebilirsiniz. Beğendiğiniz modeli bulduğunuzda adını şu şekilde iletin:
boru hattına yönelik "model" argümanı.

Bunu MINDS-14'ün Almanya'daki bölünmesi için deneyelim. "de-DE" alt kümesini yükleyin:

```py
from datasets import load_dataset
from datasets import Audio

minds = load_dataset("PolyAI/minds14", name="de-DE", split="train")
minds = minds.cast_column("audio", Audio(sampling_rate=16_000))
```

Bir örnek alın ve transkripsiyonun ne olması gerektiğini görün:

```py
example = minds[0]
example["transcription"]
```

**Çıktı:**
```out
"ich möchte gerne Geld auf mein Konto einzahlen"
```

🤗 Hub'da Almanca için önceden eğitilmiş bir ASR modeli bulun, bir işlem hattı oluşturun ve örneği yazıya dökün:

```py
from transformers import pipeline

asr = pipeline("automatic-speech-recognition", model="maxidl/wav2vec2-large-xlsr-german")
asr(example["audio"]["array"])
```

**Çıktı:**
```out
{"text": "ich möchte gerne geld auf mein konto einzallen"}
```

Also, stimmt's!

Kendi görevinizi çözmeye çalışırken, bu ünitede gösterdiğimiz gibi basit bir işlem hattıyla başlamak değerli bir adımdır.
çeşitli avantajlar sunan araç:
- Görevinizi zaten gerçekten iyi çözen, size bolca zaman kazandıran, önceden eğitilmiş bir model mevcut olabilir.
- pipeline() sizin için tüm ön/son işlemleri halleder, böylece verileri bir model için doğru formata getirme konusunda endişelenmenize gerek kalmaz
- Sonuç ideal değilse bile bu size gelecekte yapacağınız ince ayarlar için hızlı bir temel sağlar.
- Özel verileriniz üzerinde bir modele ince ayar yaptığınızda ve bunu Hub'da paylaştığınızda, yapay zekayı daha erişilebilir hale getiren "pipeline()" yöntemi aracılığıyla tüm topluluk onu hızlı ve zahmetsizce kullanabilecektir.



<EditOnGithub source="https://github.com/huggingface/audio-transformers-course/blob/main/chapters/tr/chapter2/asr_pipeline.mdx" />

### Ünite 2. Ses uygulamalarına nazik bir giriş
https://huggingface.co/learn/audio-course/tr/chapter2/introduction.md

# Ünite 2. Ses uygulamalarına nazik bir giriş

Hugging Face ses kursunun ikinci ünitesine hoş geldiniz! Daha önce, ses verilerinin temellerini keşfettik ve 🤗 Datasets ve 🤗 Transformers kütüphanelerini kullanarak ses veri kümesiyle nasıl çalışılacağını öğrendik. Örnekleme hızı, genlik, bit derinliği, dalga formu ve spektrogram gibi çeşitli kavramları tartıştık ve veriyi önceden eğitilmiş bir model için hazırlamak için nasıl işleyeceğimizi gördük.

Bu noktada, Transformers'ın gerçekleştirebileceği ses görevleri hakkında bilgi edinmek için istekli olabilirsiniz ve dalmak için gerekli tüm temel bilgilere sahipsiniz! Akıllara durgunluk veren bazı sesli görev örneklerine bir göz atalım:

* **Ses sınıflandırması**: Ses kliplerini kolayca farklı kategorilere ayırın. Bir kaydın havlayan bir köpek mi yoksa miyavlayan bir kedi mi olduğunu ya da şarkının hangi müzik türüne ait olduğunu belirleyebilirsiniz.
* **Otomatik konuşma tanıma**: Ses kliplerini otomatik olarak yazıya dönüştürerek metne dönüştürün. "Bugün nasılsın?" gibi konuşan birinin kaydının metin temsilini alabilirsiniz. Not almak için oldukça faydalı!
* **Konuşmacı günlüğü**: Kayıtta kimin konuştuğunu hiç merak ettiniz mi? 🤗 Transformers ile herhangi bir anda hangi konuşmacının konuştuğunu bir ses klibinde belirleyebilirsiniz. Bir konuşma kaydında "Alice" ve "Bob"u ayırt edebildiğinizi hayal edin.
* **Metinden konuşmaya**: sesli kitap oluşturmak, erişilebilirliğe yardımcı olmak veya bir oyundaki bir NPC'ye ses vermek için kullanılabilecek bir metnin anlatımlı bir versiyonunu oluşturun. 🤗 Transformers ile bunu kolayca yapabilirsiniz!

Bu ünite içinde, 🤗 Transformers'ın pipeline() işlevini kullanarak bazı görevler için önceden eğitilmiş modelleri nasıl kullanacağınızı öğreneceksiniz. Özellikle, önceden eğitilmiş modellerin nasıl ses sınıflandırması, otomatik konuşma tanıma ve ses üretme için kullanılabileceğini göreceğiz. Şimdi başlayalım!



<EditOnGithub source="https://github.com/huggingface/audio-transformers-course/blob/main/chapters/tr/chapter2/introduction.mdx" />

### Uygulamalı eğitim egzersizleri
https://huggingface.co/learn/audio-course/tr/chapter2/hands_on.md

# Uygulamalı eğitim egzersizleri

Bu egzersiz notlandırılmamıştır ve amacı, kursun geri kalanında kullanacağınız araçlar ve kütüphaneler hakkında bilgi sahibi olmanıza yardımcı olmaktır. Eğer Google Colab, 🤗 Datasets, librosa ve 🤗 Transformers gibi araçları kullanmada zaten deneyimliyseniz, bu egzersizi atlamayı seçebilirsiniz.

1. Bir [Google Colab](https://colab.research.google.com) not defteri oluşturun.
2. Akış modunda seçtiğiniz dilde [`facebook/voxpopuli` veri kümesinin](https://huggingface.co/datasets/facebook/voxpopuli) tren bölümünü yüklemek için 🤗 Veri Kümeleri'ni kullanın.
3. Veri kümesinin "eğitim" kısmından üçüncü örneği alın ve inceleyin. Bu örneğin sahip olduğu özellikler göz önüne alındığında, bu veri kümesini ne tür ses görevleri için kullanabilirsiniz?
4. Bu örneğin dalga formunu ve spektrogramını çizin.
5. [🤗 Hub'a](https://huggingface.co/models) gidin, önceden eğitilmiş modelleri keşfedin ve daha önce seçtiğiniz dil için otomatik konuşma tanıma için kullanılabilecek bir model bulun. Bulduğunuz modelle karşılık gelen bir ardışık düzeni örnekleyin ve örneği yazıya dökün.
6. İşlem hattından aldığınız transkripsiyonu örnekte verilen transkripsiyonla karşılaştırın.

Bu alıştırmada zorlanıyorsanız [örnek çözüme](https://colab.research.google.com/drive/1NGyo5wFpRj8TMfZOIuPaJHqyyXCITftc?usp=sharing) göz atmaktan çekinmeyin.
İlginç bir şey mi keşfettiniz? Harika bir model mi buldunuz? Güzel bir spektrogramınız mı var? Çalışmalarınızı ve keşiflerinizi Twitter'da paylaşmaktan çekinmeyin!

Sonraki bölümlerde çeşitli ses dönüştürücü mimarileri hakkında daha fazla bilgi edinecek ve kendi modelinizi eğiteceksiniz!



<EditOnGithub source="https://github.com/huggingface/audio-transformers-course/blob/main/chapters/tr/chapter2/hands_on.mdx" />

### Topluluğa katılın!
https://huggingface.co/learn/audio-course/tr/chapter0/community.md

# Topluluğa katılın!

Sizi [canlı ve destekleyici Discord topluluğumuza katılmaya davet ediyoruz](http://hf.co/join/discord). Burada benzer düşünen öğrenenlerle bağlantı kurma, fikir alışverişi yapma ve uygulamalı çalışmalarınıza değerli geri bildirimler alabilme fırsatınız olacak. Sorular sorabilir, kaynaklar paylaşabilir ve diğerleriyle işbirliği yapabilirsiniz.


Bizim ekibimiz de Discord'da aktif ve ihtiyacınız olduğunda destek ve rehberlik sağlamak için hazır bulunuyorlar. Topluluğumuza katılmak, motivasyonunuzu yüksek tutmak, katılımınızı sürdürmek ve bağlantı kurmak için mükemmel bir yol. Sizi orada görmeyi dört gözle bekliyoruz!

## Discord Nedir?

Discord, ücretsiz bir sohbet platformudur. Eğer Slack kullanmışsanız, oldukça benzer bulacaksınız. Hugging Face Discord sunucusu, 18.000'den fazla yapay zeka uzmanı, öğrenci ve meraklısının aktif olduğu canlı bir topluluğun evi, ve siz de bu topluluğun bir parçası olabilirsiniz.

## Discord'da Gezinme

Discord sunucumuza kaydolduktan sonra, ilgilendiğiniz konuları seçmek için sola tıklayarak #role-assignment üzerine tıklamanız gerekecektir. İstediğiniz kadar farklı kategori seçebilirsiniz. Bu kursun diğer öğrencilerine katılmak için, "ML for Audio and Speech"i tıklamayı unutmayın. Kanalları keşfedin ve kendinizle ilgili birkaç şeyi #introduce-yourself kanalında paylaşın.

## Sesli Kurs Kanalları


Discord sunucumuzda çeşitli konulara odaklanmış birçok kanal bulunmaktadır. İnsanların makaleleri tartıştığını, etkinlikler düzenlediğini, projelerini ve fikirlerini paylaştığını, beyin fırtınası yaptığını ve daha birçok şeyi bulacaksınız.

Ses kursu öğrencisi olarak, aşağıdaki kanal setini özellikle ilginç bulabilirsiniz:

* `#audio-announcements`: Kursla ilgili güncellemeler, Hugging Face ile ilgili sesle ilgili her şeyden haberler, etkinlik duyuruları ve daha fazlası için şunlar gibi kanalları bulabilirsiniz.
* `#audio-study-group`: Fikir alışverişi yapmak, kurs hakkında sorular sormak ve tartışmalara başlamak için bir yer.
* `#audio-discuss`: Sesle ilgili konular hakkında genel tartışmalar yapmak için bir yer.

#audio-study-group kanalına katılmak dışında, kendi çalışma grubunuzu oluşturmanızdan çekinmeyin; birlikte öğrenmek her zaman daha kolaydır!

<EditOnGithub source="https://github.com/huggingface/audio-transformers-course/blob/main/chapters/tr/chapter0/community.mdx" />

### Hugging Face Sesle Makine Öğrenmesi Kursuna Hoş Geldiniz!
https://huggingface.co/learn/audio-course/tr/chapter0/introduction.md

# Hugging Face Sesle Makine Öğrenmesi Kursuna Hoş Geldiniz!

Ses için transformer kullanımı kursuna hoş geldiniz. Zamanla birlikte transformer'ların çok yönlü ve güçlü derin öğrenme mimarilerinden biri olduklarına şahit olduk. Transformer kullanarak doğal dil işleme, bilgisayarlı görü ve ses işleme dahil olmak üzere geniş bir yelpazede son teknoloji sonuçları elde edebilirsiniz.

Bu kursta, transformer'ların ses verilerinde nasıl kullanılabileceklerini keşfedeceğiz. Konuşma tanıma, ses sınıflandırma veya metinden konuşma üretme gibi farklı görevlerle ve transformer'larla ilgiliyseniz, bu kurs tam size göre.

Bu modellerin neler yapabileceğini size göstermek için, aşağıdaki demo içinde birkaç kelime söyleyin ve modelin gerçek zamanlı olarak bunları yazıya döküşünü izleyin!

<iframe
	src="https://openai-whisper.hf.space"
	frameborder="0"
	width="850"
	height="450">
</iframe>

Kurs boyunca, ses verileriyle çalışmayı, farklı transformer mimarilerini öğrenecek ve güçlü öneğitimli modelleri kullanarak kendi ses transformer'larınızı eğiteceksiniz.

Bu kurs, derin öğrenme alanında bir geçmişi olan ve transformer'lar hakkında genel bir aşinalığa sahip öğrenciler için tasarlanmıştır.
Ses verilerinin işlenmesinde herhangi bir uzmanlık gerekmemektedir. Transformer'lar konusundaki anlayışınızı tazelemeye ihtiyacınız varsa, temel transformer konularına daha fazla detay veren [NLP Kursuna](https://huggingface.co/course/chapter1/1) göz atabilirsiniz.

## Kurs takımıyla tanış

**Sanchit Gandhi, Hugging Face'de Makine Öğrenimi Araştırma Mühendisi**

Merhaba, adım Sanchit! Hugging Face'in açık kaynak ekibinde ses için makine öğrenimi araştırma mühendisi olarak çalışıyorum. Uzmanlık alanım otomatik konuşma tanıma ve çeviri, ve şu anki hedefim ise ses modellerini daha hızlı, daha hafif ve kullanımı daha kolay hale getirmek. 🤗

**Matthijs Hollemans, Hugging Face'de Makine Öğrenimi Araştırma Mühendisi**

Adım Matthijs! Hugging Face'in açık kaynak ekibinde ses için makine öğrenimi mühendisi olarak çalışıyorum. Aynı zamanda ses sentezleyicileri nasıl yazılacağı üstüne bir kitap yazarıyım ve boş zamanlarınızda ses eklentileri oluşturuyorum.

**Maria Khalusova, Hugging Face'de Doküman & Kurs Hazırlayıcı**

Adım Maria! Transformers ve diğer açık kaynak araçlarını daha erişilebilir hale getirmek için eğitim içeriği ve dokümentasyon yazıyorum. Karmaşık teknik kavramları basitleştiriyor ve insanların son teknolojilerle nasıl başlayacaklarını anlamalarına yardımcı oluyorum.

**Vaibhav Srivastav, Hugging Face'de Makine Öğrenimi Geliştirici Destek Mühendisi**

Ben Vaibhav (VB) ve Hugging Face Açık Kaynak ekibinde Ses için Geliştirici Destek Mühendisiyim. Düşük kaynaklı Metinden Sese (Text to Speech) Makine Öğrenmesi araştırmaları yapıyor ve en son ses araştırmalarını geniş kitlelere ulaştırmaya yardımcı oluyorum.

## Kurs Yapısı

Kurs, derinlemesine çeşitli konuları kapsayan birkaç üniteye ayrılmıştır:

* [1.Ünite](https://huggingface.co/learn/audio-course/chapter1): Ses verileriyle çalışmanın özel detaylarını, ses işleme tekniklerini ve veri hazırlamayı öğrenin.
* [2.Ünite](https://huggingface.co/learn/audio-course/chapter2): Ses uygulamalarını tanıyın ve farklı görevler için 🤗 Transformers borularını kullanmayı öğrenin, bunlar arasında ses sınıflandırma ve konuşma tanıma bulunur.
* [3.Ünite](https://huggingface.co/learn/audio-course/chapter3): Ses transformer mimarilerini keşfedin, nasıl farklılaştıklarını öğrenin ve en iyi uydukları görevleri öğrenin.
* [4.Ünite](https://huggingface.co/learn/audio-course/chapter4): Kendi müzik türü sınıflandırıcınızı nasıl oluşturacağınızı öğrenin.
* [5.Ünite](https://huggingface.co/learn/audio-course/chapter5): Konuşma tanımaya derinlemesine inin ve toplantı kayıtlarını metne geçirmek için bir model eğitin.
* [6.Ünite](https://huggingface.co/learn/audio-course/chapter6): Metinden konuşma üretmeyi öğrenin.
* [7.Ünite](https://huggingface.co/learn/audio-course/chapter7): Transformer'larla gerçek dünya ses uygulamaları nasıl oluşturulduğunu öğrenin.

Her ünite, temel kavramları ve teknikleri derinlemesine anlayacağınız teorik bir bileşen içerir. Kurs boyunca bilginizi test etmenize ve öğrenmeyi pekiştirmenize yardımcı olmak için bazı bölümlerde sınavlar sunuyoruz. Bazı bölümler ayrıca uygulamalı eğitim deneylerini içerir, burada öğrendiklerinizi uygulama fırsatına sahip olacaksınız.

Kursun sonunda, ses verileri için transformer kullanımında güçlü bir temeliniz olacak ve bu teknikleri çeşitli sesle ilgili görevlere başarıyla uygulayabileceksiniz.

Kurs birimleri, aşağıdaki yayın programıyla ardışık bloklar halinde yayımlanacaktır:

| Üniteler   | Yayınlanma Tarihi |
|---|-----------------|
| 0.Ünite, 1.Ünite ve 2.Ünite  | 14 Haziran 2023   |
| 3.Ünite, Unit 4  | 21 Haziran 2023   |
| 5.Ünite  | 28 Haziran 2023   |
| 6.Ünite  | 5 Temmuz 2023    |
| 7.Ünite, 8.Ünite  | 12 Temmuz 2023   |

## Öğrenme yolları ve sertifikasyon

Bu kursu almanın doğru veya yanlış bir yolu yoktur. Bu kursun tüm materyalleri %100 ücretsiz, kamuya açık ve açık kaynaktır. Kursu kendi hızınıza göre alabilirsiniz, ancak birimleri sıralı bir şekilde geçmenizi öneririz.

Kursu tamamladıktan sonra sertifika almak isterseniz, iki seçeneğimiz bulunmaktadır:

| Sertifika türü   | Gereklilikler                                          |
|---|--------------------------------------------------------------------|
| Tamamlama Sertifikası  | Talimatlar doğrultusunda uygulamalı eğitim egzersizlerin %80'ini tamamlayın.  |
| Onur Sertifikası  | Talimatlar doğrultusunda uygulamalı eğitim egzersizlerin %100'ünü tamamlayın. |

Her uygulamalı eğitim egzersiz, tamamlama kriterlerini belirtir. Sertifikalardan herhangi biri için yeterli sayıda uygulamalı eğitim egzersizi tamamladığınızda, sertifikanızı nasıl alabileceğinizi öğrenmek için kursun son birimine başvurun. İyi şanslar!

## Kursa kayıt ol

Bu kursun birimleri birkaç hafta boyunca aşamalı olarak yayınlanacaktır. Yeni birimler yayınlandığında bunları kaçırmamak için kurs güncellemelerine kaydolmanızı öneriyoruz. Kurs güncellemelerine kaydolan öğrenciler, düzenlemeyi planladığımız özel sosyal etkinlikler hakkında da ilk bilgi sahibi olacaklardır.

[KAYIT OL](http://eepurl.com/insvcI)

Kursun keyfini çıkarın!


<EditOnGithub source="https://github.com/huggingface/audio-transformers-course/blob/main/chapters/tr/chapter0/introduction.mdx" />

### Kursa katılmaya hazırlanın
https://huggingface.co/learn/audio-course/tr/chapter0/get_ready.md

# Kursa katılmaya hazırlanın

Kursa başlamak için heyecanlı olduğunuzu umuyoruz ve bu sayfayı, hemen başlamak için gereken her şeye sahip olduğunuzdan emin olmak için tasarladık!

## 1.Adım Kayıt Ol

Tüm güncellemelerden ve özel sosyal etkinliklerden haberdar olmak için kursa kaydolun.

[👉 KAYIT OL](http://eepurl.com/insvcI)

## 2.Adım Hugging Face hesabı oluşturun

Henüz bir Hugging Face hesabınız yoksa (ücretsizdir), bir tane oluşturun. Hemen yapılması gereken görevleri tamamlamak, tamamlama sertifikanızı almak, önceden eğitilmiş modelleri keşfetmek, veri kümeslerine erişmek ve daha fazlasını yapmak için ihtiyacınız olacak.

[👉 HUGGING FACE HESABI OLUŞTUR](https://huggingface.co/join)

## 3.Adım Temel bilgilerinizi gözden geçirin (gerekliyse)

Derin öğrenme temellerine aşina olduğunuzu ve transformer'lar hakkında genel bir bilgiye sahip olduğunuzu varsayıyoruz. Eğer transformer'lar konusundaki anlayışınızı tazelemeye ihtiyacınız varsa, [NLP Kursumuza](https://huggingface.co/course/chapter1/1) göz atabilirsiniz.

## 4.Adım Kurulumununuzu kontrol edin

Kurs materyallerini incelemek için ihtiyacınız olanlar şunlardır:
- İnternet bağlantısı olan bir bilgisayar.
- Uygulamalı eğitim egzersizleri için [Google Colab](https://colab.research.google.com) gereklidir. Ücretsiz sürüm yeterlidir. Daha önce Google Colab kullanmadıysanız, bu [resmi tanıtım not defterini](https://colab.research.google.com/notebooks/intro.ipynb) inceleyebilirsiniz.

<Tip>

Ücretsiz Google Colab seçeneği yerine, kendi yerel kurulumunuzu veya Kaggle Notebook'larını kullanabilirsiniz. Kaggle Notebook'lar, sabit bir GPU saat sayısı sunar ve Google Colab ile benzer işlevselliğe sahiptir, ancak 🤗 Hub'da modellerinizi paylaşma konusunda farklılıklar bulunmaktadır (örneğin, görevleri tamamlamak için). Kaggle Notebook'larınızı tercih etmeye karar verirseniz, [@michaelshekasta](https://github.com/michaelshekasta) tarafından oluşturulan bu [örnek Kaggle not defterine](https://www.kaggle.com/code/michaelshekasta/test-notebook) göz atabilirsiniz. Bu not defteri, nasıl model eğitebileceğinizi ve eğitilmiş modelinizi 🤗 Hub'da nasıl paylaşabileceğinizi göstermektedir.

</Tip>

## 5.Adım Topluluğa katılın!

Discord sunucumuza kaydolun; sınıf arkadaşlarınızla fikir alışverişi yapabilir ve bizimle (Hugging Face ekibiyle) iletişime geçebileceğiniz yerdir.

[👉 DISCORD'DAKİ TOPLULUĞA KATILIN](http://hf.co/join/discord)

Discord üzerindeki topluluğumuz hakkında daha fazla bilgi edinmek ve en iyi şekilde nasıl faydalanabileceğinizi öğrenmek için [sonraki sayfayı](community) inceleyin.


<EditOnGithub source="https://github.com/huggingface/audio-transformers-course/blob/main/chapters/tr/chapter0/get_ready.mdx" />

### Ses verilerine giriş
https://huggingface.co/learn/audio-course/tr/chapter1/audio_data.md

# Ses verilerine giriş

Ses dalgası doğası gereği sürekli bir sinyaldir, yani belirli bir zamanda sonsuz sayıda sinyal değeri içerir. Bu durum sonlu dizileri bekleyen dijital cihazlar için sorun yaratır. Bu tip veriler dijital cihazlar tarafından işlenmeden, depolanmadan ve iletilmeden önce önce sürekli ses dalgasının bir dizi ayrık değere dönüştürülmesi gerekmektedir. Buna dijital temsil de denir. 

Herhangi bir ses verisetine baktığınızda, ses örneklerini içeren dijital dosyalar bulacaksınız. Bu örneklerin arasında metin anlamı ya da müzik parçaları bulabilir, `.wav` (Dalgaformu Ses Dosyası), `.flac` (Ücretsiz Kayıpsız Ses Kodlayıcı) ve `.mp3` (MPEG-1 Ses Katmanı 3) gibi farklı dosya formatlarıyla karşılaşabilirsiniz. Bu formatlar temelde ses sinyalinin dijital temsilini nasıl sıkıştırdıklarına göre farklılıklar gösterirler.

Şimdi bir sürekli sinyalden bu temsile nasıl ulaştığımıza bir göz atalım. Analog sinyal önce bir mikrofon tarafından yakalanır ve ses dalgalarını elektriksel bir sinyale dönüştürür. Elektriksel sinyal, örnekleme yoluyla dijital temsil elde etmek için bir Analog-Dijital Dönüştürücü tarafından sayısallaştırılır.

## Örnekleme ve örnekleme oranı

Örnekleme, sürekli bir sinyalin değerini sabit zaman aralıklarında ölçme işlemidir. Örnekleme yapılmış dalga formu, sabit aralıklarla ayrık sinyal değerlerini içerdiği için ayrık bir şekildedir.

<div class="flex justify-center">
    <img src="https://huggingface.co/datasets/huggingface-course/audio-course-images/resolve/main/Signal_Sampling.png" alt="Signal sampling illustration">
</div>

*Wikipedia makalesinden örnek: [Örneklem (sinyal işleme)](https://tr.wikipedia.org/wiki/%C3%96rnekleme_(sinyal_i%C5%9Fleme))*

**Örnekleme hızı** (aynı zamanda örnekleme frekansı olarak da adlandırılır), bir saniyede alınan örnek sayısıdır ve hertz (Hz) cinsinden ölçülür. Bir referans noktası vermek gerekirse, CD kalitesindeki sesin örnekleme hızı 44.100 Hz'dir, yani saniyede 44.100 örnek alınır. Karşılaştırma yapmak için, yüksek çözünürlüklü sesin örnekleme hızı 192.000 Hz veya 192 kHz'dir. Konuşma modellerini eğitirken yaygın olarak kullanılan bir örnekleme hızı ise 16.000 Hz veya 16 kHz'dir.

Örnekleme hızı seçimi sinyalden yakalanabilen en yüksek frekansı belirler. Bu aynı zamanda Nyquist sınırı olarak bilinir ve tam olarak örnekleme hızının yarısıdır. İnsan konuşmasındaki işitilebilir frekanslar 8 kHz'nin altındadır, bu nedenle konuşmayı 16 kHz'de örneklemek yeterlidir. Daha yüksek bir örnekleme hızı kullanmak daha fazla bilgiyi yakalamaz ve sadece bu tür dosyaların işlenmesinin hesap maliyetini artırır. Öte yandan, çok düşük bir örnekleme hızında sesi örneklemek bilgi kaybına neden olur. 8 kHz'de örneklenen konuşma, bu hızda yüksek frekansları yakalayamadığı için donuk bir ses çıkaracaktır.

Herhangi bir ses görevi üzerinde çalışırken, veri kümesindeki tüm ses örneklerinin aynı örnekleme hızına sahip olduğundan emin olmak önemlidir. Öneğitimli bir modeli özelleştirmek için özel ses veriseti kullanmayı planlıyorsanız, modelin önceden eğitildiği verilerin örnekleme hızı ve verilerinizin örnekleme hızı aynı olmalıdır. Örnekleme hızı, ardışık ses örnekleri arasındaki zaman aralığını belirler ve ses verilerinin zamansal çözünürlüğünü etkiler. Örneğin, 16.000 Hz örnekleme hızında 5 saniyelik bir ses, 80.000 değerin bir dizisi olarak temsil edilir, aynı 5 saniyelik ses 8.000 Hz örnekleme hızında ise 40.000 değerin bir dizisi olarak temsil edilir. Ses görevlerini çözen transformer modelleri, örnekleri diziler olarak ele alır. Bu modeller ses verisinin temsilini öğrenen dikkat mekanizmalarına dayanır. Örnekleme hızları farklı olan ses örnekleri için diziler farklı olduğu için, modellerin örnekleme hızları arasında genelleme yapması zor olacaktır. **Yeniden örnekleme** ses örneklerinin örnekleme hızlarını eşleştirmek için kullanılan bir işlemdir ve ses verilerini [ön işleme](preprocessing#resampling-the-audio-data) işleminin bir parçasıdır.

## Genlik ve bit derinliği

Örnekleme oranı size örneklerin ne sıklıkta alındığını söyler. Peki, her bir örnekteki değerler tam olarak nedir?

Ses, insanlar tarafından duyulabilir frekansta hava basıncındaki değişikliklerle oluşur. Bir sesin **genliği**, herhangi bir anki ses basınç seviyesini tanımlar ve decibel (dB) cinsinden ölçülür. Genliği sesin yüksekliği olarak algılarız. Örnek vermek gerekirse, normal bir konuşma sesi 60 dB'nin altındadır ve bir rock konseri insan işitme sınırlarını zorlayacak şekilde yaklaşık olarak 125 dB'de olabilir.

Dijital seste, her ses örneği bir zaman noktasında ses dalgasının genliğini kaydeder. Örneğin **bit derinliği**, bu genlik değerinin ne kadar hassasiyetle tanımlanabileceğini belirler. Yüksek bit derinliği, dijital temsilin orijinal sürekli ses dalgasına ne kadar doğru bir şekilde yaklaştığına işaret eder.

En yaygın ses bit derinlikleri 16 bit ve 24 bittir. İkisi de ikili bir terimdir, genlik değerinin sürekli olarak ayrıksallaştırıldığında kaç farklı adıma ayrıksallaştırılabileceğini temsil eder. Bu ayrıksallaştırma 16-bit ses için 65,536 adım, 24-bit ses için 16,777,216 adımdır. Çünkü ayrıksallaştırma, sürekli değeri ayrıksallaştırılmış bir değere yuvarlama işlemi içerdiğinden, örnekleme işlemi gürültü ekler. Bit derinliği ne kadar yüksekse, bu ayrıksallaştırma gürültüsü o kadar küçüktür. Pratikte, 16-bit sesin ayrıksalaştırma gürültüsü zaten işitilemeyecek kadar küçüktür, ve daha yüksek bit derinliklerini kullanmanıza gerek kalmaz.

32-bit sese de rastlayabilirsiniz. 32-bit ses örnekleri gerçel olarak saklar, oysa 16-bit ve 24-bit ses tamsayı örnekleri kullanır. 32-bit gerçel sayı hassasiyeti 24 bit olarak kabul edilir, bu da ona 24-bit sesle aynı bit derinliğini verir. Gerçel sayılı ses örneklerinin [-1.0, 1.0] aralığı içinde bulunması beklenir. Makine öğrenme modelleri doğal olarak gerçel sayılarla çalıştığından, ses önce gerçel sayı formatına dönüştürülmelidir. Bunun nasıl yapılacağını [Önişleme](preprocessing) bölümünde göreceğiz.

Sürekli ses sinyalleri gibi, dijital sesin genliği genellikle desibel (dB) cinsinden ifade edilir. İnsan işitmesi logaritmik olduğundan dolayı - kulaklarımız seslerdeki küçük dalgalanmalara yüksek seslerden daha hassastır - bir sesin yüksekliği, genliklerin de logaritmik olan desibel cinsinden ifade edilmesiyle daha kolay yorumlanır. Gerçek dünya sesi için desibel ölçeği 0 dB'den başlar, bu da insanların duyabileceği en sessiz sesi temsil eder ve daha yüksek sesler daha büyük değerlere sahiptir. Ancak dijital ses sinyalleri için 0 dB en yüksek genlikken, diğer tüm genlikler negatiftir. Hızlı bir kural olarak: her -6 dB, genliğin yarı yarıya azalması anlamına gelir ve genellikle -60 dB'nin altındaki her şey, sesi gerçekten yüksek bir ses seviyesine çıkarmazsanız işitilemez.

## Dalga biçimi olarak ses

Seslerin zaman içindeki örnek değerlerinin ve değişimlerinin **dalga formu** olarak görselleştirildiğini görmüş olabilirsiniz.
Bu aynı zamanda sesin *zaman alanı* temsili olarak da bilinir.

Bu tür görselleştirmeler, sinyalin zamanlaması, ses olayları, sinyalin genel ses yüksekliği ve seste mevcut olan herhangi bir düzensizlik veya gürültüleri gibi sinyalin belli özelliklerini tanımlamada kullanılır

Bir ses sinyalinin dalga biçimini çizmek için 'librosa' adlı bir Python kütüphanesini kullanabiliriz:

```bash
pip install librosa
```

Kütüphaneyle birlikte gelen "trumpet" adlı ses örneğini ele alalım:

```py
import librosa

array, sampling_rate = librosa.load(librosa.ex("trumpet"))
```

Bu örnek, ses zaman serisi (burada buna 'dizi' diyoruz) ve örnekleme hızından ('sampling_rate') oluşan bir demet olarak yüklenir.
Librosa'nın `waveshow()` fonksiyonunu kullanarak bu sesin dalga formuna bir göz atalım:

```py
import matplotlib.pyplot as plt
import librosa.display

plt.figure().set_figwidth(12)
librosa.display.waveshow(array, sr=sampling_rate)
```

<div class="flex justify-center">
    <img src="https://huggingface.co/datasets/huggingface-course/audio-course-images/resolve/main/waveform_plot.png" alt="Waveform plot">
</div>


Bu, sinyalin genliğini y ekseni üzerinde ve zamanı x ekseni boyunca çizer. Başka bir deyişle, her bir nokta, örnekleme sırasında alınan tek bir örnek değerine karşılık gelir. Ayrıca, librosa sesi genliği [-1.0, 1.0] arasında gerçel sayılı değerler olarak döndürür.

Görselleştirme, ses verilerini dinlerken üzerinde çalıştığınız verileri anlamak için kullanışlı bir araçtır. Sinyalin şeklini görebilir, örüntüleri gözlemleyebilir, gürültü veya bozulma belirlemeyi öğrenebilirsiniz. Veriyi normalizasyon, yeniden örnekleme veya filtreleme gibi bazı yöntemlerle önişlediyseniz, önişleme adımlarının doğru bir şekilde uygulandığını görselden doğrulayabilirsiniz. Bir modeli eğittikten sonra (örneğin, ses sınıflandırma görevinde) hata oluşan örnekleri görselleştirebilir ve sorunu gidermek için kullanabilirsiniz.

## Frekans spektrumu

Ses verilerini görselleştirmenin başka bir yolu da *frekans alanı* olarak da bilinen bir ses sinyalinin **frekans spektrumunu** çizmektir.
Spektrum, ayrık Fourier dönüşümü veya DFT kullanılarak hesaplanır. Spektrum, sinyali oluşturan her bir frekansı ve ne kadar güçlü olduğunu tarif eder.

Numpy'nin `rfft()` fonksiyonunu kullanarak DFT'yi alarak aynı trompet sesi için frekans spektrumunu çizelim.
Tüm sesin spektrumunu çizmek mümkünse de, bunun yerine küçük bir bölgeye bakmak daha kullanışlıdır. Aşağıda,
ilk 4096 örneğin DFT'sini alalım, bu aşağı yukarı çalınan ilk notanın uzunluğuna eşit olacak.

```py
import numpy as np

dft_input = array[:4096]

# DFT hesaplama
window = np.hanning(len(dft_input))
windowed_input = dft_input * window
dft = np.fft.rfft(windowed_input)

# genlik spektrumunu desibel cinsinden elde edin
amplitude = np.abs(dft)
amplitude_db = librosa.amplitude_to_db(amplitude, ref=np.max)

# frekans aralıklarını alın
frequency = librosa.fft_frequencies(sr=sampling_rate, n_fft=len(dft_input))

plt.figure().set_figwidth(12)
plt.plot(frequency, amplitude_db)
plt.xlabel("Frequency (Hz)")
plt.ylabel("Amplitude (dB)")
plt.xscale("log")
```

<div class="flex justify-center">
    <img src="https://huggingface.co/datasets/huggingface-course/audio-course-images/resolve/main/spectrum_plot.png" alt="Spectrum plot">
</div>

Bu, bu ses bölümünde mevcut olan çeşitli frekans bileşenlerinin gücünü gösterir. Frekans değerleri açık
x ekseni genellikle logaritmik ölçekte çizilir, genlikleri ise y ekseni üzerindedir.

Çizdiğimiz frekans spektrumu birkaç tepe noktası gösteriyor. Bu tepeler notanın harmoniklerine karşılık gelir.
yüksek harmonikler daha sessiz olacak şekilde çalınır. İlk zirve 620 Hz civarında olduğundan, bu bir E♭ notasının frekans spektrumudur.

DFT'nin çıktısı, gerçel ve sanal bileşenlerden oluşan karmaşık sayıların bir dizisidir. `np.abs(dft)` ile büyüklük, spektrogramdan genlik bilgisini elde eder. Gerçek ve sanal bileşenler arasındaki açı, faz spektrumunu sağlar, ancak bu genellikle makine öğrenme uygulamalarında atlanır veya kullanılmaz.

Genlik değerlerini desibel ölçeğine dönüştürmek için `librosa.amplitude_to_db()` kullandınız, böylece spektrumdaki daha ince ayrıntıları görmeyi kolaylaştırdınız. Bazen insanlar genlik yerine enerjiyi ölçen **güç spektrumunu** kullanır;
bu basitçe genlik değerlerinin karesi olan bir spektrumdur.

<Tip>
💡 Pratikte insanlar FFT terimini DFT ile birbirinin yerine kullanırlar çünkü FFT veya Hızlı Fourier Dönüşümü DFT'yi bilgisayarda hesaplamak için tek etkili yöntemdir.
</Tip>

Bir ses sinyalinin frekans spektrumu, dalga formuyla aynı bilgiyi içerir. Bunlar aynı veriye (burada trompet sesinden ilk 4096 örnek) bakmanın iki farklı yoludur. Dalga formunun genliğe karşı zaman içinde çizdiği yerde, spektrum her bir frekansın genliğini sabit bir noktada görselleştirir.


## Spektrogram

Bir ses sinyalindeki frekansların değişimini nasıl görselleştirebiliriz? Trompet birkaç nota çalıyor ve hepsinde
farklı frekanslar var. Sorun, spektrumun yalnızca belirli bir andaki frekansların donmuş anlık görüntüsünü göstermesidir.
Çözüm, her biri yalnızca küçük bir zaman dilimini kapsayan birden fazla DFT almak ve elde edilen spektrumları bir araya toplayıp **spektrogram**a dönüştürmektir. 

Spektrogram, zaman içinde değişen bir ses sinyalinin frekans içeriğini çizer. Zamanı, frekansı ve genliği tek bir grafikte görmenizi sağlar Bu hesaplamayı gerçekleştiren algoritma STFT veya Kısa Zamanlı Fourier Dönüşümüdür.

Spektrogram, kullanabileceğiniz en bilgilendirici ses araçlarından biridir. Örneğin bir müzik kaydıyla çalışırken,
çeşitli enstrümanları ve vokal parçalarını ve bunların genel sese nasıl katkıda bulunduğunu görebilirsiniz. Konuşma verisinde ise
her sesli harf belirli frekanslarla karakterize edildiğinden farklı sesli harfleri görebilirsiniz.

Librosa'nın "stft()" ve "specshow()" işlevlerini kullanarak aynı trompet sesi için bir spektrogram çizelim:

```py
import numpy as np

D = librosa.stft(array)
S_db = librosa.amplitude_to_db(np.abs(D), ref=np.max)

plt.figure().set_figwidth(12)
librosa.display.specshow(S_db, x_axis="time", y_axis="hz")
plt.colorbar()
```

<div class="flex justify-center">
    <img src="https://huggingface.co/datasets/huggingface-course/audio-course-images/resolve/main/spectrogram_plot.png" alt="Spectrogram plot">
</div>

Bu çizimde, x ekseni dalga biçimi görselleştirmesinde olduğu gibi zamanı temsil eder, ancak y ekseni Hz cinsinden frekansı temsil eder.
Rengin yoğunluğu, zamanın her noktasında frekans bileşeninin desibel (dB) cinsinden ölçülen genliğini veya gücünü verir.

Spektrogram, genellikle birkaç milisaniye süren ses sinyalinin kısa segmentlerini alıp, her segmentin frekans spektrumunu elde etmek için ayrık Fourier dönüşümünü hesaplayarak oluşturulur. Elde edilen spektrumlar daha sonra zaman ekseni üzerine üst üste konur ve spektrogramu oluşturmak için bir araya getirilir. Bu görüntüde her dikey dilim, üstten görüldüğünde tek bir frekans spektrumuna karşılık gelir. Varsayılan olarak, `librosa.stft()` ses sinyalini 2048 örneklik segmentlere böler, bu da frekans çözünürlüğü ve zaman çözünürlüğü arasında iyi bir denge sağlar.

Spektrogram ve dalga formu, aynı verinin farklı görünümleridir, bu nedenle spektrogramu orijinal dalga formuna döndürmek mümkündür, ancak bunun için genlik bilgisi dışında faz bilgisine de ihtiyaç vardır. Eğer spektrogram bir makine öğrenme modeli tarafından üretildiyse, genellikle yalnızca genlikleri çıkarır. Bu durumda, Griffin-Lim gibi klasik bir faz yeniden yapılandırma algoritması veya bir vokoder olarak adlandırılan bir sinir ağı kullanarak spektrogramdan bir dalga formunu yeniden oluşturabilirsiniz.

Spektrogramlar yalnızca görselleştirme için kullanılmaz. Birçok makine öğrenimi modeli, girdi olarak spektrogramları alır,
dalga formlarına dönüştürür ve çıktı olarak spektrogramlar üretir.

Artık spektrogramın ne olduğunu ve nasıl yapıldığını bildiğimize göre, konuşma işlemede yaygın olarak kullanılan bir çeşidine bakalım: mel spektrogramı.

## Mel spektrogramı

Mel spektrogramı, konuşma işleme ve makine öğrenimi görevlerinde yaygın olarak kullanılan spektrogramın bir çeşididir.
Bir ses sinyalinin zaman içindeki frekans içeriğini ancak farklı bir frekans ekseninde göstermesi bakımından spektrograma benzer.

Standart bir spektrogramda frekans ekseni doğrusaldır ve hertz (Hz) cinsinden ölçülür. Ancak insanın işitme sistemi
düşük frekanslardaki değişikliklere yüksek frekanslardan daha duyarlıdır ve bu duyarlılık frekans arttıkça logaritmik olarak azalır. Mel ölçeği, insan kulağının doğrusal olmayan frekans tepkisine yaklaşan algısal bir ölçektir.

Bir mel spektrogramı oluşturmak için ses verisini kısa parçalara ayırıp frekans spektrumları elde edilir. Bunun için STFT kullanılır.
Ek olarak, frekansları mel ölçeği dönüştürmek için, her spektrum mel filtre bankası olarak adlandırılan bir dizi filtre aracılığıyla gönderilir.

Tüm bu adımları bizim için gerçekleştiren librosa'nın `melspectrogram()` fonksiyonunu kullanarak bir mel spektrogramını nasıl çizebileceğimizi görelim:

```py
S = librosa.feature.melspectrogram(y=array, sr=sampling_rate, n_mels=128, fmax=8000)
S_dB = librosa.power_to_db(S, ref=np.max)

plt.figure().set_figwidth(12)
librosa.display.specshow(S_dB, x_axis="time", y_axis="mel", sr=sampling_rate, fmax=8000)
plt.colorbar()
```

<div class="flex justify-center">
    <img src="https://huggingface.co/datasets/huggingface-course/audio-course-images/resolve/main/mel-spectrogram.png" alt="Mel spectrogram plot">
</div>

Yukarıdaki örnekte, `n_mels`, oluşturulacak mel bantlarının sayısını ifade eder. Mel bantları, spektrumu insan işitmesinin farklı frekanslara nasıl tepki verdiğini taklit etmek için seçilen bir dizi filtre kullanarak algısal olarak anlamlı bileşenlere bölen frekans aralıklarını tanımlar. `n_mels` için yaygın değerler 40 veya 80'dir. `fmax`, önem verdiğimiz en yüksek frekansı (Hz cinsinden) belirtir.

Düzenli bir spektrogramda olduğu gibi, mel frekans bileşenlerinin gücünü desibel cinsinden ifade etmek yaygın bir uygulamadır. Bu genellikle bir **log-mel spektrogramu* olarak adlandırılır, çünkü desibellere dönüştürme işlemi logaritmik bir işlem içerir. Yukarıdaki örnek, `librosa.feature.melspectrogram()` olarak `librosa.power_to_db()` kullanarak güç spektrogramı oluşturur.

<Tip>
💡 Tüm mel spektrogramları aynı değildir! Yaygın olarak kullanılan iki farklı mel ölçeği vardır ("htk" ve "slaney"), ve güç spektrogramı yerine genlik spektrogramı kullanılabilir. Log-mel spektrogramına dönüştürme işlemi her zaman gerçek desibelleri hesaplamaz, sadece `log`larını alabilir. Bu nedenle, bir makine öğrenme modeli girdi olarak bir mel spektrogramı bekliyorsa, bunu aynı şekilde hesapladığınızdan emin olmak için kontrol edin.
</Tip>

Bir mel spektrogramı oluşturmak, sinyali filtrelemeyi içerdiği için kayıplı bir işlemdir. Bir mel spektrogramını bir dalga formuna dönüştürmek, bir düzenli spektrogram için bunu yapmaktan daha zordur, çünkü daha önce kaybedilen frekansları tahmin etmeyi gerektirir. Bu nedenle, mel spektrogramından bir dalga formu üretmek için HiFiGAN vokoder gibi makine öğrenme modellerine ihtiyaç vardır.

Standart bir spektrogramla karşılaştırıldığında, bir mel spektrogramı ses sinyalinin daha anlamlı özelliklerini yakalayabilir.
Bu, mel spektrogramını, konuşma tanıma, konuşmacıyı tanımlama ve müzik türü sınıflandırması gibi görevlerde onu popüler bir seçim haline getiriyor.

Artık ses verisi örneklerini nasıl görselleştireceğinizi bildiğinize göre, en sevdiğiniz seslerin nasıl göründüğünü görmeye çalışın. :)


<EditOnGithub source="https://github.com/huggingface/audio-transformers-course/blob/main/chapters/tr/chapter1/audio_data.mdx" />

### Ses veri kümesini ön işleme
https://huggingface.co/learn/audio-course/tr/chapter1/preprocessing.md

# Ses veri kümesini ön işleme

🤗 Veri Kümeleri ile bir veri kümesi yüklemek eğlencenin sadece yarısıdır. Bir modeli eğitmek veya çalıştırmak için kullanmayı planlıyorsanız
Çıkarım yapmak için öncelikle verileri önceden işlemeniz gerekecektir. Genel olarak bu, aşağıdaki adımları içerecektir:

* Ses verilerinin yeniden örneklenmesi
* Veri kümesini filtreleme
* Ses verilerini modelin beklenen girişine dönüştürme

## Ses verilerini yeniden örnekleme


load_dataset işlevi, ses örneklerini indirirken, bu örneklerin yayınlandığı örnekleme hızını kullanır. Bu, eğitmeyi veya çıkarmayı planladığınız modelin beklediği örnekleme hızı ile her zaman uyuşmaz. Örnekleme hızları arasında bir uyumsuzluk varsa, sesi modelin beklediği örnekleme hızına yeniden örnekleyebilirsiniz.


Çoğu önceden eğitilmiş model, ses veri kümelerinde 16 kHz örnekleme hızında önceden eğitildi. MINDS-14 veri kümesini keşfettiğinizde, bu verinin 8 kHz örnekleme hızında olduğunu görmüş olabilirsiniz, bu da muhtemelen bunu yükseltmemiz gerekeceği anlamına gelir.


Bunu yapmak için, 🤗 Datasets'ın cast_column yöntemini kullanabilirsiniz. Bu işlem sesi yerinde değiştirmez, ancak veri kümesine ses örneklerini yüklerken on-the-fly olarak örnekleme yapması gerektiğini belirtir. Aşağıdaki kod, örnekleme hızını 16 kHz olarak ayarlayacaktır:

```py
from datasets import Audio

minds = minds.cast_column("audio", Audio(sampling_rate=16_000))
```

MINDS-14 veri kümesindeki ilk ses örneğini yeniden yükleyin ve istenen "örnekleme hızına" yeniden örneklendiğini kontrol edin:


```py
minds[0]
```

**Çıktı:**
```out
{
    "path": "/root/.cache/huggingface/datasets/downloads/extracted/f14948e0e84be638dd7943ac36518a4cf3324e8b7aa331c5ab11541518e9368c/en-AU~PAY_BILL/response_4.wav",
    "audio": {
        "path": "/root/.cache/huggingface/datasets/downloads/extracted/f14948e0e84be638dd7943ac36518a4cf3324e8b7aa331c5ab11541518e9368c/en-AU~PAY_BILL/response_4.wav",
        "array": array(
            [
                2.0634243e-05,
                1.9437837e-04,
                2.2419340e-04,
                ...,
                9.3852862e-04,
                1.1302452e-03,
                7.1531429e-04,
            ],
            dtype=float32,
        ),
        "sampling_rate": 16000,
    },
    "transcription": "I would like to pay my electricity bill using my card can you please assist",
    "intent_class": 13,
}
```

Dizi değerlerinin de artık farklı olduğunu fark edebilirsiniz. Bunun nedeni artık iki kat daha fazla genlik değerine sahip olmamızdır.
daha önce sahip olduğumuz her biri.

<Tip>
💡 Örnekleme hakkında bazı temel bilgiler: Bir ses sinyali 8 kHz'de örneklenmişse, yani saniyede 8000 örnek okuma alıyorsak, sesin 4 kHz'nin üzerinde herhangi bir frekanseyi içermediğini biliyoruz. Bu, Nyquist örnekleme teoremi tarafından garanti edilir. Bu nedenle, örnekleme noktaları arasında, orijinal sürekli sinyalin her zaman düzgün bir eğri oluşturduğundan emin olabiliriz. Örnekleme hızını daha yüksek bir örnekleme hızına yükseltmek, bu eğriyi yaklaşıklayarak mevcut olanların arasına ek örnek değerlerini hesaplamakla ilgilidir. Bununla birlikte, örnekleme hızını düşürmek, önce yeni Nyquist sınırından daha yüksek frekanstaki herhangi bir frekansı filtrelemeyi gerektirir, ardından yeni örnek noktalarını tahmin etmeden önce. Yani, örnekleme hızını 2x faktörüyle sadece her diğer örneği atarak düşüremezsiniz - bu, sinyalde bozulmalara yol açan aliaslar adı verilen bozulmaları oluşturur. Örnekleme işlemini doğru bir şekilde yapmak karmaşıktır ve en iyi test edilmiş kütüphanelere, örneğin librosa veya 🤗 Datasets gibi kütüphanelere bırakılmalıdır.
</Tip>

## Veri kümesini filtreleme

Verileri bazı kriterlere göre filtrelemeniz gerekebilir. Yaygın durumlardan biri, ses örneklerinin belirli bir
Belirli süre. Örneğin, yetersiz bellek hatalarını önlemek için 20 saniyeden uzun örnekleri filtrelemek isteyebiliriz.
Bir modeli eğitirken.


Bunu 🤗 Datasets'in `filter` metodunu kullanarak ve ona filtreleme mantığı olan bir fonksiyon geçirerek yapabiliriz. Bir tane yazarak başlayalım
Hangi örneklerin saklanacağını ve hangilerinin atılacağını gösteren işlev. Bu işlev, "ses_uzunluğu_aralığındadır",
Örnek 20 saniyeden kısaysa "Doğru"yu, 20 saniyeden uzunsa "Yanlış"ı döndürür.

```py
MAX_DURATION_IN_SECONDS = 20.0


def is_audio_length_in_range(input_length):
    return input_length < MAX_DURATION_IN_SECONDS
```

Filtreleme işlevi bir veri kümesinin sütununa uygulanabilir ancak bunda ses izleme süresine sahip bir sütunumuz yoktur.
veri kümesi. Ancak bir tane oluşturabilir, o sütundaki değerlere göre filtreleyebilir ve ardından kaldırabiliriz.

```py
# ses dosyasından örneğin süresini almak için librosa'yı kullanalım
new_column = [librosa.get_duration(path=x) for x in minds["path"]]
minds = minds.add_column("duration", new_column)

# filtreleme işlevini uygulamak için 🤗 Veri Kümelerinin "filtre" yöntemini kullanın
minds = minds.filter(is_audio_length_in_range, input_columns=["duration"])

# geçici yardımcı sütunu kaldırın
minds = minds.remove_columns(["duration"])
minds
```

**Çıktı:**
```out
Dataset({features: ["path", "audio", "transcription", "intent_class"], num_rows: 624})
```

Veri kümesinin 654 örnekten 624'e filtrelendiğini doğrulayabiliriz.

## Ses verilerinin ön işlenmesi

Ses veri kümeleriyle çalışmanın en zorlayıcı yönlerinden biri, veriyi model eğitimi için doğru formatta hazırlamaktır. Gördüğünüz gibi, ham ses verileri örnek değerlerinin bir dizisi olarak gelir. Ancak, kullanıyorsanız, çıkarım için kullanıyor olsanız veya göreviniz için ince ayar yapmak istiyorsanız, önceden eğitilmiş modeller, ham verilerin giriş özelliklerine dönüştürülmesini bekler. Giriş özellikleri için gereksinimler bir modelden diğerine değişebilir - bunlar modelin mimarisine ve önceden eğitildiği verilere bağlıdır. İyi haber şu ki, her desteklenen ses modeli için 🤗 Transformers, ham ses verilerini modelin beklediği giriş özelliklerine dönüştürebilen bir özellik çıkarıcı sınıfı sunar.

Peki özellik çıkarıcı ham ses verileriyle ne yapar? Şimdi [Whisper](https://huggingface.co/papers/2212.04356)'ın fotoğraflarına bir göz atalım
Bazı ortak özellik çıkarma dönüşümlerini anlamak için özellik çıkarıcı. Whisper, önceden eğitilmiş bir modeldir.
Alec Radford ve diğerleri tarafından Eylül 2022'de yayınlanan otomatik konuşma tanıma (ASR). OpenAI'den.

İlk olarak, Whisper özellik çıkarıcısı bir ses örneklerinin yığınını, tüm örneklerin 30 saniyelik bir giriş uzunluğuna sahip olduğu şekilde doldurur/keser. Bu süreden daha kısa olan örnekler, sıfırları dizinin sonuna ekleyerek 30 saniyeye kadar doldurulur (bir ses sinyalindeki sıfırlar, hiç sinyal veya sessizlikle karşılık gelir). 30 saniyeden daha uzun olan örnekler 30 saniyeye kadar kesilir. Yığındaki tüm öğeler giriş uzayındaki maksimum uzunluğa doldurulduğu/kesildiği için bir dikkat maskesine ihtiyaç yoktur. Whisper bu açıdan benzersizdir, diğer çoğu ses modelleri, dizilerin nerede doldurulduğunu ayrıntılı olarak belirten ve bu nedenle öz-dikkat mekanizmasında nerede görmezden gelinmesi gerektiğini belirten bir dikkat maskesi gerektirir. Whisper, bir dikkat maskesi olmadan çalışacak şekilde eğitilmiştir ve girişleri nerede göz ardı edeceğini doğrudan konuşma sinyallerinden çıkarır.

Whisper özellik çıkarıcısının gerçekleştirdiği ikinci işlem, doldurulmuş ses dizilerini log-mel spektrogramlarına dönüştürmektir. Hatırlarsanız, bu spektrogramlar bir sinyalin frekanslarının zaman içinde nasıl değiştiğini, mel ölçeğinde ifade edilmiş ve insan işitmesini daha iyi temsil etmek için decibel cinsinden ölçülmüş şekilde açıklar (log kısmı).

Tüm bu dönüşümler birkaç satır kodla ham ses verilerinize uygulanabilir. Devam edelim ve yükleyelim
ses verilerimize hazır olmak için önceden eğitilmiş Whisper kontrol noktasından özellik çıkarıcı:

```py
from transformers import WhisperFeatureExtractor

feature_extractor = WhisperFeatureExtractor.from_pretrained("openai/whisper-small")
```

Daha sonra, tek bir ses örneğini "feature_extractor"dan geçirerek ön işleme tabi tutacak bir işlev yazabilirsiniz.

```py
def prepare_dataset(example):
    audio = example["audio"]
    features = feature_extractor(
        audio["array"], sampling_rate=audio["sampling_rate"], padding=True
    )
    return features
```

Veri hazırlama fonksiyonunu tüm eğitim örneklerimize 🤗 Datasets'in harita yöntemini kullanarak uygulayabiliriz:

```py
minds = minds.map(prepare_dataset)
minds
```

**Çıktı:**
```out
Dataset(
    {
        features: ["path", "audio", "transcription", "intent_class", "input_features"],
        num_rows: 624,
    }
)
```

Bu kadar kolay, artık veri kümesinde 'giriş_özellikleri' olarak log-mel spektrogramlarımız var.

Bunu 'minds' veri kümesindeki örneklerden biri için görselleştirelim:

```py
import numpy as np

example = minds[0]
input_features = example["input_features"]

plt.figure().set_figwidth(12)
librosa.display.specshow(
    np.asarray(input_features[0]),
    x_axis="time",
    y_axis="mel",
    sr=feature_extractor.sampling_rate,
    hop_length=feature_extractor.hop_length,
)
plt.colorbar()
```

<div class="flex justify-center">
    <img src="https://huggingface.co/datasets/huggingface-course/audio-course-images/resolve/main/log_mel_whisper.png" alt="Log mel spectrogram plot">
</div>

Artık Whisper modelindeki ses girişinin ön işlemeden sonra nasıl göründüğünü görebilirsiniz.

Modelin özellik çıkarıcı sınıfı, ham ses verilerinin modelin beklediği formata dönüştürülmesiyle ilgilenir. Fakat,
ses içeren birçok görev çok modludur; Konuşma tanıma. Bu gibi durumlarda 🤗 Transformers modele özel olarak da hizmet vermektedir.
metin girişlerini işlemek için belirteçler. Tokenizer'lara ilişkin derinlemesine bilgi edinmek için lütfen [NLP kursumuza](https://huggingface.co/course/chapter2/4) bakın.

Whisper ve diğer multimodal modeller için özellik çıkarıcıyı ve tokenizer'ı ayrı ayrı yükleyebilir veya her ikisini de
sözde işlemci. İşleri daha da kolaylaştırmak için, bir modelin özellik çıkarıcısını ve işlemcisini bir bilgisayardan yüklemek için 'Otomatik İşlemci'yi kullanın.
kontrol noktası şöyle:

```py
from transformers import AutoProcessor

processor = AutoProcessor.from_pretrained("openai/whisper-small")
```

Burada temel veri hazırlama adımlarını gösterdik. Elbette özel veriler daha karmaşık ön işleme gerektirebilir.
Bu durumda, herhangi bir özel veri dönüşümü gerçekleştirmek için `prepare_dataset` fonksiyonunu genişletebilirsiniz. 🤗 Veri Kümeleri ile,
bunu bir Python işlevi olarak yazabiliyorsanız veri kümenize [uygulayabilirsiniz](https://huggingface.co/docs/datasets/audio_process)!!


<EditOnGithub source="https://github.com/huggingface/audio-transformers-course/blob/main/chapters/tr/chapter1/preprocessing.mdx" />

### Daha fazla öğren
https://huggingface.co/learn/audio-course/tr/chapter1/supplemental_reading.md

# Daha fazla öğren

Bu ünite, ses verisinin anlaşılması ve üzerinde çalışılması ile ilgili birçok temel kavramı kapsadı. Daha fazla öğrenmek mi istiyorsunuz? İşte konuları daha derinlemesine anlamanıza ve öğrenme deneyiminizi geliştirmenize yardımcı olacak ek kaynaklar bulabileceğiniz yer.


Aşağıdaki videoda, xiph.org'dan Monty Montgomery, gerçek ses ekipmanı kullanarak örnekleme, nicemleme, bit derinliği ve dither konularında modern dijital analiz ve eski analog laboratuvar ekipmanı kullanarak gerçek zamanlı gösterimler sunuyor. İzlemek isterseniz aşağıdaki bağlantıya tıklayabilirsiniz:

<Youtube id="cIQ9IXSUzuM"/>

Dijital sinyal işleme konusunda daha derinlemesine bilgi edinmek isterseniz, New York Üniversitesi Müzik Teknolojisi ve Veri Bilimi Yardımcı Profesörü ve librosa paketinin başlıca sürdürücüsü olan Brian McFee tarafından yazılmış ücretsiz [Digital Signals Theory](https://brianmcfee.net/dstbook-site/content/intro.html) kitabını incelemenizi öneririm.


<EditOnGithub source="https://github.com/huggingface/audio-transformers-course/blob/main/chapters/tr/chapter1/supplemental_reading.mdx" />

### Kurs materyalini anladığınızı kontrol edin
https://huggingface.co/learn/audio-course/tr/chapter1/quiz.md

# Kurs materyalini anladığınızı kontrol edin

### 1. Örnekleme hızı hangi birimlerle ölçülür?

<Question
	choices={[
		{
			text: "dB",
			explain: "Hayır, genlik desibel (dB) cinsinden ölçülür."
		},
		{
			text: "Hz",
			explain: "Örnekleme hızı, bir saniyede alınan örnek sayısıdır ve hertz (Hz) cinsinden ölçülür.",
			correct: true
		},
		{
			text: "bit",
			explain: "Bitler, bir ses sinyalinin her örneğini temsil etmek için kullanılan bilgi bitlerinin sayısını ifade eden bit derinliğini tanımlamak için kullanılır.",
		}
	]}
/>

### 2. Büyük bir ses veri kümesini aktarırken, onu ne kadar sürede kullanmaya başlayabilirsiniz?

<Question
	choices={[
		{
			text: "Veri kümesinin tamamı indirilir indirilmez.",
			explain: "Veri akışının amacı, bir veri kümesini tamamen indirmeye gerek kalmadan verilerle çalışabilmektir."
		},
		{
			text: "16 örnek indirilir indirilmez",
			explain: "Tekrar Dene!"
		},
		{
			text: "İlk örnek indirildiği anda.",
			explain: "",
			correct: true
		}
	]}
/>

### 3. Spektrogram nedir?

<Question
	choices={[
		{
			text: "İlk olarak bir mikrofon tarafından yakalanan sesi dijitalleştiren bir cihaz, ses dalgalarını elektriksel bir sinyale dönüştürür.",
			explain: "Böyle bir elektriksel sinyali dijitalleştirmek için kullanılan bir cihaza Analog-Dijital Dönüştürücü denir. Tekrar deneyin!"
		},
		{
			text: "Ses sinyalinin zaman içindeki genlik değişimini gösteren bir grafik. Ayrıca sesin zaman *etki alanı* temsili olarak da bilinir.",
			explain: "Yukarıdaki açıklama spektrograma değil dalga formuna atıfta bulunmaktadır."
		},
		{
			text: "Zamanla değişen bir sinyalin frekans spektrumunun görsel temsili.",
			explain: "",
			correct: true
		}
	]}
/>

### 4. Ham ses verilerini Whisper'ın beklediği log-mel spektrogramına dönüştürmenin en kolay yolu nedir?

A.
```python
librosa.feature.melspectrogram(audio["array"])
```

B.
```python
feature_extractor = WhisperFeatureExtractor.from_pretrained("openai/whisper-small")
feature_extractor(audio["array"])
```

C.
```python
dataset.feature(audio["array"], model="whisper")
```

<Question
	choices={[
		{
			text: "A",
			explain: "`librosa.feature.melspectrogram()` bir güç spektrogramı oluşturur."
		},
		{
			text: "B",
			explain: "",
			correct: true
		},
		{
			text: "C",
			explain: "Dataset, Transformer modelleri için özellik hazırlamaz, bu işlem modelin ön işlemcisi tarafından yapılır."
		}
	]}
/>

### 5. 🤗 Hub'dan veri kümesini nasıl yüklersiniz?

A.
```python
from datasets import load_dataset

dataset = load_dataset(DATASET_NAME_ON_HUB)
```

B.
```python
import librosa

dataset = librosa.load(PATH_TO_DATASET)
```

C.
```python
from transformers import load_dataset

dataset = load_dataset(DATASET_NAME_ON_HUB)
```

<Question
	choices={[
		{
			text: "A",
			explain: "En iyi yol 🤗 Veri Kümeleri kütüphanesini kullanmaktır.",
			correct: true
		},
		{
			text: "B",
			explain: "Librosa.load, tek bir ses dosyasını bir yoldan ses zaman serisi ve örnekleme hızına sahip bir tuple'a yüklemek için kullanışlıdır, ancak birçok örnek ve çoklu özellik içeren tüm veri kümesini yüklemez."
		},
		{
			text: "C",
			explain: "load_dataset yöntemi 🤗 Transformers'ta değil, 🤗 Veri Kümeleri kitaplığında gelir."
		}
	]}
/>

### 6. Özel veri kümeniz 32 kHz örnekleme hızına sahip yüksek kaliteli ses içerir. Ses örneklerinin 16 kHz örnekleme hızına sahip olmasını bekleyen bir konuşma tanıma modeli eğitmek istiyorsunuz. Ne yapmalısın?

<Question
	choices={[
		{
			text: "Örnekleri olduğu gibi kullanın; model kolaylıkla daha yüksek kaliteli ses örneklerine genelleştirilecektir.",
			explain: "Dikkat mekanizmalarına dayanılması nedeniyle modellerin örnekleme oranları arasında genelleme yapması zordur."
		},
		{
			text: "Özel veri kümesindeki örnekleri alt örneklemek için 🤗 Veri Kümeleri kitaplığından Ses modülünü kullanın",
			explain: "",
			correct: true
		},
		{
			text: "Diğer tüm numuneleri atarak 2 kat alt numune alın.",
			explain: "Bu, takma ad adı verilen sinyalde bozulmalar yaratacaktır. Yeniden örneklemeyi doğru bir şekilde yapmak zordur ve en iyisi librosa veya 🤗 Veri Kümeleri gibi iyi test edilmiş kitaplıklara bırakılmasıdır."
		}
	]}
/>

### 7. Makine öğrenimi modeli tarafından oluşturulan bir spektrogramı dalga biçimine nasıl dönüştürebilirsiniz?

<Question
	choices={[
		{
			text: "Spektrogramdan bir dalga biçimini yeniden oluşturmak için ses kodlayıcı adı verilen bir sinir ağını kullanabiliriz.",
			explain: "Bu durumda faz bilgisi eksik olduğundan, dalga biçimini yeniden oluşturmak için bir ses kodlayıcı veya klasik Griffin-Lim algoritmasını kullanmamız gerekir.",
			correct: true
		},
		{
			text: "Oluşturulan spektrogramı dalga biçimine dönüştürmek için ters STFT'yi kullanabiliriz.",
			explain: "Oluşturulan bir spektrogramda, ters STFT'yi kullanmak için gerekli olan faz bilgisi eksiktir."
		},
		{
			text: "Makine öğrenimi modeli tarafından oluşturulan bir spektrogramı dalga biçimine dönüştüremezsiniz.",
			explain: "Tekrar Dene!"
		}
	]}
/>


<EditOnGithub source="https://github.com/huggingface/audio-transformers-course/blob/main/chapters/tr/chapter1/quiz.mdx" />

### 1.Ünite Ses verileriyle çalışma
https://huggingface.co/learn/audio-course/tr/chapter1/introduction.md

# 1.Ünite Ses verileriyle çalışma

## Bu üniteden ne öğreceneksiniz.

Her ses veya konuşma görevi bir ses dosyasıyla başlar. Bu görevleri çözmeye dalmadan önce, bu dosyaların aslında neler içerdiğini anlamak ve onlarla nasıl çalışılacağını öğrenmek önemlidir.

Bu ünitede, ses verileri ile ilgili temel terimleri, dalga formu, örnekleme hızı ve spektrogram gibi, anlayacaksınız. Ayrıca, ses veri kümesi ile çalışmayı, ses verilerini yükleme ve önişleme işlemlerini ve büyük veri kümelerini verimli bir şekilde akıtarak nasıl çalışılacağını öğreneceksiniz.

Bu ünitenin sonunda, temel ses verisi terimlerini sağlam bir şekilde kavrayacak ve çeşitli uygulamalar için ses veri kümesi ile çalışmak için gereken becerilere sahip olacaksınız. Bu ünitede edineceğiniz bilgi, kursun geri kalanını anlamak için bir temel oluşturacak.

<EditOnGithub source="https://github.com/huggingface/audio-transformers-course/blob/main/chapters/tr/chapter1/introduction.mdx" />

### Ses verileri akışı
https://huggingface.co/learn/audio-course/tr/chapter1/streaming.md

# Ses verileri akışı

Ses veri kümelerinde karşılaşılan en büyük zorluklardan biri boyutlarıdır. Tek bir dakikalık sıkıştırılmamış CD kalitesinde ses (44,1 kHz, 16 bit)
5 MB'tan biraz daha fazla depolama alanı kaplıyor. Tipik olarak bir ses veri kümesi saatlerce kayıt içerir.

Önceki bölümlerde MINDS-14 ses veri kümesinin çok küçük bir alt kümesini kullandık, ancak tipik ses veri kümeleri çok daha büyüktür.
Örneğin, [SpeechColab'dan GigaSpeech](https://huggingface.co/datasets/speechcolab/gigaspeech)'in "xs" (en küçük) yapılandırması
yalnızca 10 saatlik eğitim verisi içerir ancak indirme ve hazırlık için 13 GB'ın üzerinde depolama alanı kaplar. Ne olmuş
Daha büyük bir split üzerinde antrenman yapmak istediğimizde ne olur? Aynı veri kümesinin tam 'xl' yapılandırması 10.000 saatlik veri içerir.
1 TB'tan fazla depolama alanı gerektiren eğitim verileri. Çoğumuz için bu, tipik bir cihazın özelliklerini fazlasıyla aşıyor.
sabit sürücü diski. Ek depolama alanı ayırmamız ve satın almamız gerekiyor mu? Veya bu veri kümeleri üzerinde disk alanı kısıtlaması olmadan eğitim almamızın bir yolu var mı?

🤗 Veri kümeleri, [akış modunu](https://huggingface.co/docs/datasets/stream) sunarak imdada yetişiyor. Akış, verileri aşamalı olarak yüklememize olanak tanır
 veri kümesi üzerinde yineleme yapıyoruz. Veri setinin tamamını bir kerede indirmek yerine, veri setini tek seferde bir örnek olarak yüklüyoruz.
 Veri kümesi üzerinde yinelemeler yapıyoruz, gerektiğinde örnekleri anında yüklüyor ve hazırlıyoruz. Bu şekilde, biz sadece
 Kullandığımız örnekleri yükleyin, kullanmadıklarımızı değil!
Örnek bir örnekle işimiz bittiğinde, veri kümesi üzerinde yinelemeye devam ediyoruz ve bir sonrakini yüklüyoruz.

Akış modunun tüm veri kümesini aynı anda indirmeye kıyasla üç temel avantajı vardır:

* Disk alanı: Biz veri kümesi üzerinde yineledikçe örnekler belleğe tek tek yüklenir. Veriler indirilmediğinden
yerel olarak herhangi bir disk alanı gereksinimi yoktur, dolayısıyla isteğe bağlı boyuttaki veri kümelerini kullanabilirsiniz.
* İndirme ve işleme süresi: Ses veri kümeleri büyüktür ve indirilip işlenmesi önemli miktarda zaman gerektirir.
Akış ile yükleme ve işleme anında yapılır; bu, veri kümesini ilk kez kullanmaya başlayabileceğiniz anlamına gelir
örnek hazır.
* Kolay deneme: Komut dosyanızın çalışıp çalışmadığını kontrol etmek için birkaç örnek üzerinde denemeler yapabilirsiniz.
tüm veri kümesini indir.

Streaming modunun bir kısıtlaması bulunmaktadır. Akış olmadan tam bir veri kümesi indirildiğinde, hem ham veri hem de işlenmiş veri yerel diskte kaydedilir. Bu veri kümesini yeniden kullanmak istediğimizde, işlenmiş veriyi doğrudan diskin üzerinden yükleyebiliriz, indirme ve işleme adımlarını atlayarak. Sonuç olarak, indirme ve işleme işlemlerini yalnızca bir kez yapmamız yeterlidir, ardından hazırlanan veriyi yeniden kullanabiliriz.

Akış modunda veriler diske indirilmez. Böylece ne indirilen ne de önceden işlenmiş veriler önbelleğe alınmaz.
Veri kümesini yeniden kullanmak istiyorsak, ses dosyaları yüklenip işlenerek akış adımlarının tekrarlanması gerekir.
yine sinek. Bu nedenle birden çok kez kullanmanız muhtemel veri setlerini indirmeniz tavsiye edilir.

Akış modunu nasıl etkinleştirebilirsiniz? Çok kolay! Veri kümenizi yüklerken streaming=True olarak ayarlayın. Gerisi sizin için otomatik olarak halledilecektir:

```py
gigaspeech = load_dataset("speechcolab/gigaspeech", "xs", streaming=True)
```

Tıpkı MINDS-14'ün indirilen bir alt kümesine ön işleme adımlarını uyguladığımız gibi, aynı ön işlemeyi bir alt kümeyle de yapabilirsiniz.
veri kümesini tam olarak aynı şekilde aktarır.


Tek fark, Python indeksi kullanarak artık bireysel örneklerine erişemeyeceğinizdir (örneğin gigaspeech["train"][örnek_idx]). Bunun yerine, veri kümesi üzerinde döngü kullanmanız gerekecektir. Bir veri kümesine akış yaparken bir örneğe nasıl erişebileceğinizi aşağıda gösteriliyor:

```py
next(iter(gigaspeech["train"]))
```

**Çıktı:**
```out
{
    "segment_id": "YOU0000000315_S0000660",
    "speaker": "N/A",
    "text": "AS THEY'RE LEAVING <COMMA> CAN KASH PULL ZAHRA ASIDE REALLY QUICKLY <QUESTIONMARK>",
    "audio": {
        "path": "xs_chunks_0000/YOU0000000315_S0000660.wav",
        "array": array(
            [0.0005188, 0.00085449, 0.00012207, ..., 0.00125122, 0.00076294, 0.00036621]
        ),
        "sampling_rate": 16000,
    },
    "begin_time": 2941.89,
    "end_time": 2945.07,
    "audio_id": "YOU0000000315",
    "title": "Return to Vasselheim | Critical Role: VOX MACHINA | Episode 43",
    "url": "https://www.youtube.com/watch?v=zr2n1fLVasU",
    "source": 2,
    "category": 24,
    "original_full_path": "audio/youtube/P0004/YOU0000000315.opus",
}
```

Büyük bir veri kümesinden birkaç örneği önizlemek isterseniz, ilk n öğeyi almak için take() işlevini kullanabilirsiniz. Şimdi, gigaspeech veri kümesinden ilk iki örneği alalım:

```py
gigaspeech_head = gigaspeech["train"].take(2)
list(gigaspeech_head)
```

**Çıktı:**
```out
[
    {
        "segment_id": "YOU0000000315_S0000660",
        "speaker": "N/A",
        "text": "AS THEY'RE LEAVING <COMMA> CAN KASH PULL ZAHRA ASIDE REALLY QUICKLY <QUESTIONMARK>",
        "audio": {
            "path": "xs_chunks_0000/YOU0000000315_S0000660.wav",
            "array": array(
                [
                    0.0005188,
                    0.00085449,
                    0.00012207,
                    ...,
                    0.00125122,
                    0.00076294,
                    0.00036621,
                ]
            ),
            "sampling_rate": 16000,
        },
        "begin_time": 2941.89,
        "end_time": 2945.07,
        "audio_id": "YOU0000000315",
        "title": "Return to Vasselheim | Critical Role: VOX MACHINA | Episode 43",
        "url": "https://www.youtube.com/watch?v=zr2n1fLVasU",
        "source": 2,
        "category": 24,
        "original_full_path": "audio/youtube/P0004/YOU0000000315.opus",
    },
    {
        "segment_id": "AUD0000001043_S0000775",
        "speaker": "N/A",
        "text": "SIX TOMATOES <PERIOD>",
        "audio": {
            "path": "xs_chunks_0000/AUD0000001043_S0000775.wav",
            "array": array(
                [
                    1.43432617e-03,
                    1.37329102e-03,
                    1.31225586e-03,
                    ...,
                    -6.10351562e-05,
                    -1.22070312e-04,
                    -1.83105469e-04,
                ]
            ),
            "sampling_rate": 16000,
        },
        "begin_time": 3673.96,
        "end_time": 3675.26,
        "audio_id": "AUD0000001043",
        "title": "Asteroid of Fear",
        "url": "http//www.archive.org/download/asteroid_of_fear_1012_librivox/asteroid_of_fear_1012_librivox_64kb_mp3.zip",
        "source": 0,
        "category": 28,
        "original_full_path": "audio/audiobook/P0011/AUD0000001043.opus",
    },
]
```

Akış modu, araştırmanızı bir üst seviyeye taşıyabilir: Sadece en büyük veri kümelerine erişim sağlamakla kalmaz, aynı zamanda disk alanınızı düşünmeden birden fazla veri kümesi üzerinde sistemleri kolayca değerlendirebilirsiniz. Tek bir veri kümesinde değerlendirmekle karşılaştırıldığında, çoklu veri kümesi değerlendirmesi, bir konuşma tanıma sisteminin genelleme yetenekleri için daha iyi bir ölçüm sağlar (bkz. End-to-end Speech Benchmark - ESB).



<EditOnGithub source="https://github.com/huggingface/audio-transformers-course/blob/main/chapters/tr/chapter1/streaming.mdx" />

### Bir ses veri kümesini yükleyin ve keşfedin
https://huggingface.co/learn/audio-course/tr/chapter1/load_and_explore.md

# Bir ses veri kümesini yükleyin ve keşfedin

Bu kurs boyunca ses veri kümeleriyle çalışmak için 🤗 Datasets kütüphanesini kullanacağız. 🤗 Datasets, ses dahil tüm modalitelerden veri kümelerini indirmek ve hazırlamak için kullanılan açık kaynaklı bir kütüphanedir. Bu kütüphane, Hugging Face Hub üzerinde kamuya açık olarak kullanılabilir durumda olan benzersiz bir makine öğrenimi veri kümesine kolay erişim sunar. Ayrıca, 🤗 Datasets, araştırmacılar ve uygulamacılar için ses veri kümeleriyle çalışmayı basitleştiren çeşitli ses veri kümesi özellikleri içerir.

Ses veri kümeleriyle çalışmaya başlamak için 🤗 Veri Kümeleri kitaplığının kurulu olduğundan emin olun:

```bash
pip install datasets[audio]
```

🤗 Veri Kümelerinin en önemli tanımlayıcı özelliklerinden biri, tek bir satırda veri kümesini indirip hazırlayabilme yeteneğidir.
'load_dataset()' işlevini kullanan Python kodu.

Haydi yükleyip keşfedelim ve aşağıdakileri içeren [MINDS-14](https://huggingface.co/datasets/PolyAI/minds14) adlı ses veri kümesini yükleyelim
e-bankacılık sistemine çeşitli dil ve lehçelerde sorular soran kişilerin kayıtları.

MINDS-14 veri kümesini yüklemek için veri kümesinin tanımlayıcısını Hub'a kopyalayıp ("PolyAI/minds14") aktarmamız gerekir.
'load_dataset' işlevine. Ayrıca yalnızca Avustralya alt kümesiyle (`en-AU`) ilgilendiğimizi de belirteceğiz.
verileri kullanın ve bunu eğitim bölümüyle sınırlandırın:

```py
from datasets import load_dataset

minds = load_dataset("PolyAI/minds14", name="en-AU", split="train")
minds
```

**Çıktı:**
```out
Dataset(
    {
        features: [
            "path",
            "audio",
            "transcription",
            "english_transcription",
            "intent_class",
            "lang_id",
        ],
        num_rows: 654,
    }
)
```


Veri kümesi, her biri bir transkript, bir İngilizce çeviri ve kişinin sorgusu arkasındaki niyeti gösteren bir etiket ile eşlenmiş 654 ses dosyasını içerir. "audio" sütunu ham ses verisini içerir. Bir örneğe daha yakından bakalım:

```py
example = minds[0]
example
```

**Çıktı:**
```out
{
    "path": "/root/.cache/huggingface/datasets/downloads/extracted/f14948e0e84be638dd7943ac36518a4cf3324e8b7aa331c5ab11541518e9368c/en-AU~PAY_BILL/response_4.wav",
    "audio": {
        "path": "/root/.cache/huggingface/datasets/downloads/extracted/f14948e0e84be638dd7943ac36518a4cf3324e8b7aa331c5ab11541518e9368c/en-AU~PAY_BILL/response_4.wav",
        "array": array(
            [0.0, 0.00024414, -0.00024414, ..., -0.00024414, 0.00024414, 0.0012207],
            dtype=float32,
        ),
        "sampling_rate": 8000,
    },
    "transcription": "I would like to pay my electricity bill using my card can you please assist",
    "english_transcription": "I would like to pay my electricity bill using my card can you please assist",
    "intent_class": 13,
    "lang_id": 2,
}
```

Ses sütununun çeşitli özellikler içerdiğini fark edebilirsiniz. İşte bunlar:
* `path`: ses dosyasının yolu (bu durumda `*.wav`).
* `array`: 1 boyutlu NumPy dizisi olarak temsil edilen kodu çözülmüş ses verileri.
* `sampling_rate`. Ses dosyasının örnekleme hızı (bu örnekte 8.000 Hz).

'Intent_class' ses kaydının bir sınıflandırma kategorisidir. Bu sayıyı anlamlı bir dizeye dönüştürmek için,
'int2str()' yöntemini kullanabiliriz:

```py
id2label = minds.features["intent_class"].int2str
id2label(example["intent_class"])
```

**Çıktı:**
```out
"pay_bill"
```

Transkripsiyon özelliğine bakarsanız ses dosyasının gerçekten de soru soran bir kişiyi kaydettiğini görebilirsiniz.
Bir faturanın ödenmesiyle ilgili.

Bu veri alt kümesinde bir ses sınıflandırıcısı eğitmeyi planlıyorsanız, tüm özelliklere kesinlikle ihtiyacınız olmayabilir. Örneğin, "lang_id" tüm örnekler için aynı değere sahip olacak ve faydalı olmayacaktır. "english_transcription" büyük olasılıkla bu alt kümedeki "transcription" ile aynı bilgileri içerdiğinden, bunları güvenli bir şekilde kaldırabiliriz.

🤗 Datasets'in `remove_columns` yöntemini kullanarak alakasız özellikleri kolayca kaldırabilirsiniz:

```py
columns_to_remove = ["lang_id", "english_transcription"]
minds = minds.remove_columns(columns_to_remove)
minds
```

**Çıktı:**
```out
Dataset({features: ["path", "audio", "transcription", "intent_class"], num_rows: 654})
```

Artık veri setinin ham içeriğini yükleyip incelediğimize göre birkaç örnek dinleyelim! 'Bloklar'ı kullanacağız
ve veri kümesinden rastgele birkaç örneğin kodunu çözmek için "Gradio"daki "Ses" özellikleri:

```py
import gradio as gr


def generate_audio():
    example = minds.shuffle()[0]
    audio = example["audio"]
    return (
        audio["sampling_rate"],
        audio["array"],
    ), id2label(example["intent_class"])


with gr.Blocks() as demo:
    with gr.Column():
        for _ in range(4):
            audio, label = generate_audio()
            output = gr.Audio(audio, label=label)

demo.launch(debug=True)
```

İsterseniz bazı örnekleri de görselleştirebilirsiniz. İlk örnek için dalga formunu çizelim.

```py
import librosa
import matplotlib.pyplot as plt
import librosa.display

array = example["audio"]["array"]
sampling_rate = example["audio"]["sampling_rate"]

plt.figure().set_figwidth(12)
librosa.display.waveshow(array, sr=sampling_rate)
```

<div class="flex justify-center">
    <img src="https://huggingface.co/datasets/huggingface-course/audio-course-images/resolve/main/waveform_unit1.png" alt="Waveform plot">
</div>

Deneyin! MINDS-14 veri kümesinin başka bir lehçesini veya dilini indirin, bir fikir edinmek için bazı örnekleri dinleyin ve görselleştirin
tüm veri kümesindeki varyasyon. Mevcut dillerin tam listesini [burada](https://huggingface.co/datasets/PolyAI/minds14) bulabilirsiniz.

<EditOnGithub source="https://github.com/huggingface/audio-transformers-course/blob/main/chapters/tr/chapter1/load_and_explore.mdx" />
