ses dosyasını binarye dönüştürme

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
Lord_Ares
Üye
Mesajlar: 1070
Kayıt: 15 Eki 2006 04:33
Konum: Çorlu

ses dosyasını binarye dönüştürme

Mesaj gönderen Lord_Ares »

merhaba arkadaşlar

yeni bir program hazırladım. Program mikrafondan verdiğiniz türçke komutları yerine getiriyor.bunu birde görsellik ekledim. karşınızda bir bayan duruyor ve sizinle verdiğiniz komutlara göre ileşitim sağlıyor. Gelelim sorunuma.

Sorun
programı hazırlarken internette bulduğum bir DLL dosyasından yararlandım.DLL dosyası demo olduğu için bana 20 kelime kısıtlaması getirdi.Çalışma mantığı şu şekil
bir adet listbox var içine komutları ekliyoruz( örnek çalıştırmak istediğim program msn ise okunuşunu listboxa mesene şeklinde ekliyoruz.)
DLL dosyasını form creatinde çağırdıktan sonra Addword komutu ile listboxtaki komutları DLL yüklüyoruz. Böylece mikrofondan söylenen ile listboxtakini karşılaştırıp komutu buluyor.
Fakat dediğim gibi DLL sadece 20 komut eklememe izin veriyor. 21 komutu yüklerken hata vermiyor sadece görmezden geliyor.
Bu sorunu aşmak için DLL dosyasının içeriğini görmeye çalıştım. Eğer görebilirsem mantığını çözüp kendi DLL dosyamı yapabilirdim. Bazı programlar ile DLL içine baktım fakat kullanılan fonksiyonları göremedim. Sanırım program bu olayı düzgün yapamadı.

1. DLL dosyasının içindeki komutları nasıl görebilirim.
( internette şöyle bir şey gördüm. Dinamik bağlantı için, LoadLibrary ve FreeLibrary olayı. kullanmak istediğin DLL dosyasını çağırarak hafızaya yüklenmesini sağlıyorlarsun. Hafızaya yüklendikten sonra LoadLibrary komutu ile handle numarasını öğreniyor ve DLL dosyanın içeriği okunabiliyormuş. Sizce bu doğrumu yapılabilirmi. )

2.ses dosyasını binary haline çevirmek istiyorum bunu nasıl yapabilirim.


teşekkürler
cozturk
Üye
Mesajlar: 484
Kayıt: 15 Haz 2005 05:22

Re: ses dosyasını binarye dönüştürme

Mesaj gönderen cozturk »

- DLL dosyası içinde asıl işi yapan prosedürler, fonksiyonlar (DSP işlemleri) büyük ihtimal okunabilir değildir. Yani bir exe dosyanın açık kodunu anlayabilmek gibidir. Bazı araçlar mevcut. fonksiyon isimlerin alınabiliyordu. kodlar ise asm olarak. Bunlara bakarak yeni bir DLL yazabilmek çok zor olsa gerek.

- Ses dosyası içeriğini anlamak zor değildir. Ancak bunları söylenen söz ile byte olarak kıyaslamak ve böylece komutu anlayabilmek mümkün değil. Komut her söylenişinde baytlar farklı olacak. Daha karışık algoritmalar gerekli. ( DSP )
http://www.google.com.tr/search?hl=tr&n ... =Ara&meta=

Windows içinde sesli komutları anlayan bazı bölümler vardı. Bunları kullanmak ücretsiz olabilir.
http://en.wikipedia.org/wiki/Speech_App ... _Interface
Kullanıcı avatarı
mrmarman
Üye
Mesajlar: 4741
Kayıt: 09 Ara 2003 08:13
Konum: İstanbul
İletişim:

Re: ses dosyasını binarye dönüştürme

Mesaj gönderen mrmarman »

@mrmarman [url=http://www.delphiturkiye.com/forum/viewtopic.php?f=2&t=14681&start=8]TIKLAYINIZ[/url] başlığında yazdı:Selam..

- Osiloskop yerine birim zamandaki ses volume değişikliğini örnekleyerek daha basit haledebilirsin. Bunun için eşik volume değerini belirleyip o değeri geçtiği noktalara 1 geçemediği noktalara 0 dersen, birim zamanda ölçüm değeri kadar bitlik veri elde edilmiş olur. Bu metodu ilk creative ses kartımın sesle komut yazılımında görmüştüm. Birim zamandaki örnek sayısı hassasiyeti belirliyor.

- Bu metod kısa komutları karıştırabilmesinden dolayı sorunlu olmasına rağmen cümle halindeki komutlarda başarı oranı oldukça yüksek. Ayrıca ortamdaki fon sesler komut seviyelerine direkt etki etmediğinden herhangi bir sürekli çalışan cihaz sesi olsa da görev yapabiliyor.

- Osiloskop halinde karşılaştırma durumunda, ortamdaki fon sesindeki değişiklik grafiğe direkt etki ettiğinden karşılaştırma başarısı büyük oranda düşüyor.

- Başarılar..
Resim
Resim ....Resim
Lord_Ares
Üye
Mesajlar: 1070
Kayıt: 15 Eki 2006 04:33
Konum: Çorlu

Re: ses dosyasını binarye dönüştürme

Mesaj gönderen Lord_Ares »

verdiğiniz bilgiler için hepinize teşekürler. araştırmam sırasında bazı bilgiler buldum. Anladığım kadarıyla baya zor olacak.
http://ab.org.tr/ab07/bildiri/137.doc belgede baya bahsetmiş. Bu arada isteyen olursa elimdeki örneğide verebilirim. Dikteapi.com adında arama yaparsanız örneklerini inceleyebilir veya programcılar için sunulmuş komponenti demo olarak kullanabilirsiniz. Ben indirdim denedim gayet başarılı çalışıyor fakat kısıtlı. kullanırken farkettiğim ilk şey dll dosyasının mesaj yolu ile rakamsal değerleri gönderdiği. bunları bir listboxa alarak inceledim. ses kayıt cihazından bir kelimeyi defalarca programa gönderdiğimde değerlerin birbirlerine çok yakın olduğunu gördüm hatta bazen değerler tamamen aynıydı. sanırım mantık şu şekilde. harflerin veya hecelerin belli ses grafiği çıkarılıp kütüphane oluşturuluyor.
daha sonra mikrofondan alınan sesin grafiği çıkarılarak rakamsal değerlere dönüştürülüp kütüphanedekilerinle karşılaştırılıyor. En yakın değerlere sahip olanlar sonuç olarak veriliyor.
araştırmaya devam ediyorum.
Cevapla