türkçe konuşan bilgisayar...

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
i_zec
Üye
Mesajlar: 119
Kayıt: 01 Tem 2005 03:07

türkçe konuşan bilgisayar...

Mesaj gönderen i_zec »

herkese kolay gelsın arkadaslar...
bi ara gordum gibi hatırlıyorum ama forumda bulmadım . bilgisayarı türkçe konuşturmak mümkünmü?Nasıl bir yol izleyecez?Konu hakkında bilgi verirseniz cok sevinirim....
İyi Çalışmalar.....
argetek
Üye
Mesajlar: 27
Kayıt: 15 Kas 2005 01:01

bilgisayarı turkce konusturmak

Mesaj gönderen argetek »

bu konu genelde yapayzeka konuları altında yer almaktadır yapay sinir aglarını arastırırsan konu hakkında baya bir bilgi bulabiliceni umuyorum birde belli b,r kac kelimeyi soletmek istiyorsan sayet bu konu yuda ses sentezleme işlemleri adı altında arastırabilirsin
i_zec
Üye
Mesajlar: 119
Kayıt: 01 Tem 2005 03:07

Mesaj gönderen i_zec »

saol kardes verdiğin bilgiler için.lakin ses sentezleme diyince bu olay ses tanıma kapsamına gırmıyomu?en azından ben ole gordum.ole değilse yada bıraz daha geniş bilgi verirsen sevinirm.hece yapılarını mı gozetmek gerekıyor yoksa seslerimi?girişirsem içinden çıkabilrmiyim acaba?çünkü bunun projenın bi parçası olamasını düşünüyorum.hayırlısı bakalım....
Engin tecrübelerinize dayanan tecrübe ve bilgilerinizi beklıyorum...
iyi çalışmalar...
Kullanıcı avatarı
mucar
Kıdemli Üye
Mesajlar: 247
Kayıt: 17 May 2005 01:14

Mesaj gönderen mucar »

merhaba,

yapmak istediğiniz sadece yazıları bilgisayarın seslendirmesi ise yapay zekaya gerek yok diye düşünüyorum. ama programınız seslere karşı tepki verecekse bunun için ses tanıma yöntemlerinden birini kullanmalısınız (ysa da bunlarda biri). ama misal, iş sadece bir edit'teki yazıyı okutmaksa yapay sinir ağları kullanmadan şöyle bir yol size bir fikir verebilir;

ilkokul öğretmenleri bize okumayı nasıl öğrettiyse o şekilde yapmalıyız bu işi, çünkü türkçe kelimeler kelime içindeki sesler birleştirilerek okunur, bu da bi avantaj. öncelikle biz o zaman her harfin seslendirmesini yapıp kaydetmeliyiz bunları ayrı ayrı dosyalar olarak. ama dikkat edilecek husus ise telaffuz ederken a, be, ce, çe,... vs gibi değil de a,b,c,ç,.. gibi yani tek harfi seslendirmek suretiyle kaydedilmeli, sonuna koyduğumuz 'e' sesleri olmayacak. sonra bunları a.wav, b.wav,... gibi kaydettikten sonra şöyle bir programlama mantığı izlenebilir;

Kod: Tümünü seç

uses MMSystem;
...

function seslendir(harf:string):boolean;
...

function tform1.seslendir(harf:string):boolean;
begin

if harf='a' then
PlaySound('C:\a.wav', 0, Snd_FileName or Snd_Async)
else if harf='b' then
PlaySound('C:\b.wav', 0, Snd_FileName or Snd_Async)
else if harf='c' then
PlaySound('C:\c.wav', 0, Snd_FileName or Snd_Async)
else if harf='ç' then
PlaySound('C:\ç.wav', 0, Snd_FileName or Snd_Async)
else if harf='d' then
PlaySound('C:\d.wav', 0, Snd_FileName or Snd_Async)
.
.
.
else if (harf=' ') or (harf=',') or (harf='.') or ... then
sleep(1000); // noktalama işaretlerinde biraz duraklamalı

sleep(500); 
//her seslendirmeden sonra biraz duraklamalı
//bunu koymazsak döngü çok hızlı işleyeceğinden dolayı sadece son harfe ait ses duyulur 
end;

procedure TForm1.Button1Click(Sender: TObject);
var i:integer;
begin
for i := 1 to length(edit1.Text) do
begin
seslendir(copy(edit1.Text,i,1));
end;
end;
bu kodları denemeden buraya yazdım hata olabilir, mantık olarak da mutlaka daha uygun yollar vardır. Sadece ilk aklıma gelen bu oldu.
"Evine bakmaktan aciz olan; ilerici, üç kıtaya hükmeden ecdadın mı gerici?"
i_zec
Üye
Mesajlar: 119
Kayıt: 01 Tem 2005 03:07

Mesaj gönderen i_zec »

saol fikrin için.ilk fırsatta deneyeceğim.başka onerileri olan varsa onlarıda beklıyorum...
İyi çalışmalar....
aLonE CoDeR
Kıdemli Üye
Mesajlar: 1223
Kayıt: 26 Nis 2005 04:08

Mesaj gönderen aLonE CoDeR »

Selamlar.
MS'nin hazır gelen bi davası var bunun için, voicespeak olayını delphide kullanabiliyorsunuz, kodlarını tam hatırlayamadım şu an...Tabii aradığınız şey yazılan kelimeleri okutmak ise...
Kolay gele..
Kullanıcı avatarı
mucar
Kıdemli Üye
Mesajlar: 247
Kayıt: 17 May 2005 01:14

Mesaj gönderen mucar »

Evet Denetim Masası->Konuşma diye bir yerde var bu olay. Microsoft SAM diye birşey. Ama ingilizceye göre telaffuz ediyor. Çok komik oluyor. Denemesi bedava :lol:
"Evine bakmaktan aciz olan; ilerici, üç kıtaya hükmeden ecdadın mı gerici?"
aLonE CoDeR
Kıdemli Üye
Mesajlar: 1223
Kayıt: 26 Nis 2005 04:08

Mesaj gönderen aLonE CoDeR »

@mucar;

Delphi içinden de kullanabiliyorsunuz bunu, telaffuz konusunda ingilizceye göre hazırlandığı için sıkıntı var elbette ama en basit yöntem bu sanırım :wink:
Kullanıcı avatarı
mucar
Kıdemli Üye
Mesajlar: 247
Kayıt: 17 May 2005 01:14

Mesaj gönderen mucar »

Doğrudur hocam mutlaka vardır, eleştiri olarak söylemedim. Tabii ki dediğiniz gibi gerek olmadıkça var olan birşeye ekstra zaman harcamamak gerek.
"Evine bakmaktan aciz olan; ilerici, üç kıtaya hükmeden ecdadın mı gerici?"
aLonE CoDeR
Kıdemli Üye
Mesajlar: 1223
Kayıt: 26 Nis 2005 04:08

Mesaj gönderen aLonE CoDeR »

Hocam eleştiri de yapabilirsiniz elbette, hatta bundan memnun da olurum zira yanlışı, eksiği bu şekilde tespit etmek daha kolay olur sanırım.

Kolay gele..
Kullanıcı avatarı
mucar
Kıdemli Üye
Mesajlar: 247
Kayıt: 17 May 2005 01:14

Mesaj gönderen mucar »

tabii ki sevindim buna, zira kimin eleştirileri kaldıracağını bilemiyoruz. bu yüzden yapmamak en iyisi. ben de açığım her zaman için. sizin verdiğiniz fikir de gayet pratik, "text to speech" diyerek aradım hemen çıktı. hatta projede kullanmak için 1 dakika harcamak yeterli

şöyle ki;

İlk önce Project -> Import Type Library'ye tıklıyoruz.
Microsoft Speech Object Library'yi seçip Install ediyoruz.
ActiveX tabına yeni bileşenler ekleniyor.
Buradan projeye bir tane SPVoice nesnesi ekliyoruz (ActiveX tabından).
Bir edit koyuyoruz, bir de buton.
Butona tıklandığında da şu kodlar çalışacak;

Kod: Tümünü seç

procedure TForm1.Button1Click(Sender: TObject);
begin
SpVoice1.Speak(edit1.Text, SVSFDefault);
end;
Bu şekilde çalışıyor. Bir de bunun Türkçesi mevcutsa gayet güzel birşey olmuş olur. Onu da araştırmak lazım.

İlgili makale;
http://www.blong.com/Conferences/DCon20 ... SAPI51.htm
"Evine bakmaktan aciz olan; ilerici, üç kıtaya hükmeden ecdadın mı gerici?"
mbt
Üye
Mesajlar: 165
Kayıt: 27 Şub 2004 01:23

Mesaj gönderen mbt »

http://www.gvz.com.tr -> Türk mühendislerinin bunlarla ilgili yaptığı çok başarılı çalışma.
i_zec
Üye
Mesajlar: 119
Kayıt: 01 Tem 2005 03:07

Mesaj gönderen i_zec »

saolun beyler.gerçekten cok yardımcı oluyorsunz.birşey daha soracagım.alınan bir ses kaydı ile bilgisayarda kayıtlı olan bir ses dosyasını nasıl karşılaştırabilir?
Kullanıcı avatarı
mucar
Kıdemli Üye
Mesajlar: 247
Kayıt: 17 May 2005 01:14

Mesaj gönderen mucar »

ses tanıma yani. işte bunun için yapay sinir ağları ile ses tanıma yöntemi kullanılabilir. bu başlı başına bir proje zaten.
"Evine bakmaktan aciz olan; ilerici, üç kıtaya hükmeden ecdadın mı gerici?"
aLonE CoDeR
Kıdemli Üye
Mesajlar: 1223
Kayıt: 26 Nis 2005 04:08

Mesaj gönderen aLonE CoDeR »

Selamlar.

Bunun için çok gelişmiş sistemler/teknikler olmasına karşın temelinde kısaca bahsedeceğim yöntem kullanılıyor bildiğim kadarıyla.

- Bu tür sistemler "geri besleme" denilen yöntemle sesi karşılaştırıyor..Yani kaynak daha önceden oluşturulmuş olmalı ki karşılaştırma yapılabilsin..

- Mikrofondan söylenen (ya da sistemden herhangi bi şekilde deklare edilen..) ses ek olarak bir kayıt işlemine tabii tutuluyor ve temp şeklinde kayıt ediliyor..

- Ses çalınarak spectrum (Winamp ya da benzer player uygulamalarda gördüğünüz sesin şiddeti-şiddet kelimesi yanlış kullanılmış olabilir..- gösteren barlar..) alınıyor..

- Son olarak elde edilen bu spectrum değerleri ve mevcut değerler karşılaştırılıyor, çok yakın bir eşleştirmeyle kontrol ediliyor..

Elbette ki % 100 sonuç döndürmüyor ve çok fazla kaydı bu şekilde eşleştirmeniz şimdilik mümkün değil (kimbilir, ileride o da mümkün olabilir..)

Kolay gele..
Cevapla