Welcome, Ziyaretçi

Gönderen Konu: Sinyal modelleme  (Okunma sayısı 9478 defa)

0 Üye ve 1 Ziyaretçi konuyu incelemekte.

Uykusuz

  • Administrator
  • Yarbay
  • ******
  • İleti: 2599
  • Teşekkür: 207
  • while(heart_rate>0){work();}
Ynt: Sinyal modelleme
« Yanıtla #15 : 19 Temmuz 2017, 09:59:03 »
Hocam merhabalar
Böyle biraz geç yazıyorum kusuruma bakmayın. Bahsettiğiniz bölgeyi yumuşatarak şiddetini azalttım. Bu noktayı aşağıdaki kısmı ekleyerek yaptım:

Kod: Üye Olmadan Linkleri Göremezsiniz. Üye Olun veya Giriş Yapın
k=30000;
while k<35000
    x(k)=x(k)/(1+4*sin(((k-30000)/5000)*3.14));
    k=k+1;
end
Ses dosyası ektedir.

Buradaki sin fonksiyonun başındaki katsayıyı arttırarak heceleme hissini baskın hale getirebilirsiniz. Fakat L harfi heceleme işi nasıl olur bilmiyorum helo kelimsesindeki L kısmını yanyana kopyaladım fakat çok hoşuma gitmedi sildim.

kodun son hali:


Kod: Üye Olmadan Linkleri Göremezsiniz. Üye Olun veya Giriş Yapın
[y1,Fs1] = audioread('sinyal_1.wav');
[y2,Fs2] = audioread('sinyal_3.wav');
[y3,Fs3] = audioread('sinyal_3.wav');



subplot(4,1,1), plot(y1);
subplot(4,1,2), specgram(y1, 512, Fs1);
%sound(y1,Fs1)

y1 = y1*4;
n=4;



Wn=8000*2/Fs1;
[b a]=butter(n,Wn,'low');
y1_lp=filter(b,a,y1);
%x = medfilt1(x,3);

Wn=10*2/Fs1;
[b a]=butter(n,Wn,'high');
y1_lp=filter(b,a,y1_lp);


x = medfilt1(y1_lp,5);
 
 

k=1;
while k<15000
    x(k)=0;
    k=k+1;
end

k=30000;
while k<35000
    x(k)=x(k)/(1+2*sin(((k-30000)/5000)*3.14));
    k=k+1;
end


k=50000;
while k<length(x)
    x(k)=0;
    k=k+1;
end


subplot(4,1,3), plot(x);
subplot(4,1,4), specgram(x, 128, Fs1);
sound(x,Fs1)

Projelerimiz için tıklayın Üye Olmadan Linkleri Göremezsiniz. Üye Olun veya Giriş Yapın
Sipariş ve Bilgi için satis@lugatek.com ile irtibata geçiniz.
Lütfen teknik sorularınızı forumda sorunuz özel mesaj göndermeyiniz

semiconnector

  • Teğmen
  • ***
  • İleti: 101
  • Teşekkür: 2
Ynt: Sinyal modelleme
« Yanıtla #16 : 19 Temmuz 2017, 14:05:21 »
merhaba hocam,
güzel olmus tesekkür ederim. Siddeti, yok edilecek kisim daralma genisleme ayarlabiliyor. Acaba ayni yerde Alanin tamami degilde, Acaba spektogramda sesli bölgede kücük bir bölge, belli bir aralik kontrol edilebilir mi?
 Birde yolladigim gui de Tepe frekanslari ve band genisliginden olusturulan sentez hakkinda düsüncelerinizi duymak isterim.

semiconnector

  • Teğmen
  • ***
  • İleti: 101
  • Teşekkür: 2
Ynt: Sinyal modelleme
« Yanıtla #17 : 19 Temmuz 2017, 14:16:10 »
Hocam bir de sadece belirli bir bölgedeki genligi nasil yükseltebiliriz? Yani mesela bütün kelimenin degilde sadece bir hecenin daha anlasilir olabilmesi icin denemek istiyordum.

semiconnector

  • Teğmen
  • ***
  • İleti: 101
  • Teşekkür: 2
Ynt: Sinyal modelleme
« Yanıtla #18 : 21 Temmuz 2017, 18:19:24 »
Kod: Üye Olmadan Linkleri Göremezsiniz. Üye Olun veya Giriş Yapın
k=30000;
while k<35000
    x(k)=x(k)/(1+4*sin(((k-30000)/5000)*3.14));
    k=k+1;
end

Hocam genlik olayini hallettim. Ama bilmek istedigim spektral yumusatma yaparken yukaridaki sin ile formülü neye göre yazdiginiz.

Uykusuz

  • Administrator
  • Yarbay
  • ******
  • İleti: 2599
  • Teşekkür: 207
  • while(heart_rate>0){work();}
Ynt: Sinyal modelleme
« Yanıtla #19 : 22 Temmuz 2017, 14:24:56 »
Merhaba

Hocam aslında oldukça basil. Helo kelimesinedeki lo kısmının neresi olduğu az çok belli oluyor. Burayı belirledikten sonra grafikte kaçıncı örnekler arası olduğu görünüyor.  Bizim grafikte 30000 - 35000 arası 5000 örneklik bir kısımda yer alıyor. Buradan bir while döngüsü ile ilgili kısımlar silinebilir. Benim burada sin fonksiyonu kullanmamın sebebi de silme işlemnin başladığı yer ile bittiği yer anlarında  gürültü oluşmasını engellemek için yumuşak başlayış ve yumuşak bitişi sağlamak. Sin eğrisini yarım peryodunu olan pi sayısı (3.14) tam silinmek istenen alana oturtarak bu işlemi gerçekleştirdik. Yani 30000 ile 35000 arasında yarım sin eğrisi katsayısı kadar bir bölme işlemi yapılıyor.

Aynı işlemi genlik arttırmak için de kullanabilirsiniz tek yapmanız gereken bölme yerine çarpma yapmak ve katsayıyı ayarlamak.

Burada sin fonksiyonu kullanamadan direkt olarak azaltma işlemi oluştursaydık başlangıç bitiş anlarında pıt diye başlangıç bitiş sesleri oluşacaktı.

Yollamış olduğunuz kodları anlayabilmem için biraz zamana ihtiyacım var hocam aslına bakarsanız bu konular ile daha önceden pek ilgilenmediğim için ilk bakışta anlayamadım. Daha önceden arayüz de yazmadığım için anlamam çok zor.  :)
Projelerimiz için tıklayın Üye Olmadan Linkleri Göremezsiniz. Üye Olun veya Giriş Yapın
Sipariş ve Bilgi için satis@lugatek.com ile irtibata geçiniz.
Lütfen teknik sorularınızı forumda sorunuz özel mesaj göndermeyiniz

semiconnector

  • Teğmen
  • ***
  • İleti: 101
  • Teşekkür: 2
Ynt: Sinyal modelleme
« Yanıtla #20 : 22 Temmuz 2017, 21:04:20 »
merhaba Uykusuz hocam cok sagol güzel anlatmissiniz. Evet o dediginiz baslangic ve bitisteki Pit seslerini ben Hazir Programlarda bile duyuyordum:) sin gercekten cok iyi olmus. Tesekkur ederim. Benim arayüzde önemli olan sentez butonu altindaki sesi brlestikten sonraki filtre. Sadece bir filtre ile yapiyorum. Bel ki buraya daha mverimli bir filtre kullanilabilir ;)

semiconnector

  • Teğmen
  • ***
  • İleti: 101
  • Teşekkür: 2
Ynt: Sinyal modelleme
« Yanıtla #21 : 22 Temmuz 2017, 23:10:36 »
Hocam biz basta filtreleme yaptik ama bir filtreleme daha ihtiyacim var ??? 4 sinyal yolluyorum. Sinyal_1_sentezsiz = Direk sizin yazdiginiz Program ile hem gürültülü yerleri attik hem de  genlik yükseltilmistik.
Sinyal_1_sentezli = Filtrelenmis sentezden sonra cikan sonucu sentez icinde koydum ve gördügüm sentezleme butonunun altindaki sentez ve filtre, düzelttigimiz sinyalin tekrar frekansini ve genligini artirmis gürültü yapmis :)
Sinyal_1_sentezdensonra_tekrarfiltre = Yukarida cikan spektral yumusatmayi ayarlamak icin tekrar sizin yazdiginiz filtreye koydum ve spektral kismi yumusatabildim. Aslinda ses de sonuclar degismiyor ama Spektogram da göründügü gibi sentezden sonra sinyale anladigim fazla gürültü geliyor. En son kisimda yazdigimiz filtreleme yeterli gelmiyor. 2. Sinyalden sonuncuya gecerken filtrelemeyi modifiye etmemiz gerekiyor hocam. Anlatabildin mi tam bilemiyorum ::)
dxpspektrum = Spektrum bizim sese ait degil herhangi sinyal internetten ekledim.
En sonunda Spektrum görüntüsünü bastaki Spektrum tipi gibi elde edebilir miyiz?  :-\

Uykusuz

  • Administrator
  • Yarbay
  • ******
  • İleti: 2599
  • Teşekkür: 207
  • while(heart_rate>0){work();}
Ynt: Sinyal modelleme
« Yanıtla #22 : 07 Ağustos 2017, 08:09:01 »
Hocam merhaba,
Sentezden sonraki filtrelenecek nihai ses dosyasını ekleyebilir misiniz incelemek için.
Projelerimiz için tıklayın Üye Olmadan Linkleri Göremezsiniz. Üye Olun veya Giriş Yapın
Sipariş ve Bilgi için satis@lugatek.com ile irtibata geçiniz.
Lütfen teknik sorularınızı forumda sorunuz özel mesaj göndermeyiniz

semiconnector

  • Teğmen
  • ***
  • İleti: 101
  • Teşekkür: 2
Ynt: Sinyal modelleme
« Yanıtla #23 : 08 Ağustos 2017, 12:55:08 »
Merhaba Uykusuz hocam,

sentez sonrasi ses dosyasini ekte bulabilirsiniz. Bu size yolladigim hastanin normal sesi sentezlendikten sonraki hali ve Formant hesapla butonuna bastiginizda cikan degerleri degistirdikce sesde degismeler oluyor ama tam anlami ile düzelme yok. Sizin dediginiz gibi hastanin nefes kismini düzeltilbilecek bir filtre ya da yöntem bulabilirsek süper olur. O zaman hastanin her söyledigi kelime sonrasinda bir sekilde gürültünün yok olmasi ve sonrasinda temiz bir sinyal olabilir diye düsünüyorum.

Uykusuz

  • Administrator
  • Yarbay
  • ******
  • İleti: 2599
  • Teşekkür: 207
  • while(heart_rate>0){work();}
Ynt: Sinyal modelleme
« Yanıtla #24 : 14 Ağustos 2017, 08:51:38 »
Merhaba Hocam,
Hastanın konuşmaya başladığı andaki nefes sesini tüm konuşmadan çıkararak bişeyler yapmaya çalıştım fakat pek bir işe yaramadı maalesef.

Kod: Üye Olmadan Linkleri Göremezsiniz. Üye Olun veya Giriş Yapın
[y1,Fs1] = audioread('sinyal_1.wav');
[y2,Fs2] = audioread('sinyal_3.wav');
[y3,Fs3] = audioread('sinyal_3.wav');



subplot(4,1,1), plot(y1);
subplot(4,1,2), specgram(y1, 512, Fs1);
%sound(y1,Fs1)

y1 = y1*4;
n=4;



Wn=8000*2/Fs1;
[b a]=butter(n,Wn,'low');
y1_lp=filter(b,a,y1);
%x = medfilt1(x,3);

Wn=10*2/Fs1;
[b a]=butter(n,Wn,'high');
y1_lp=filter(b,a,y1_lp);


x = medfilt1(y1_lp,5);
 
 

k=1;
while k<15000
    x(k)=0;
    k=k+1;
end

k=30000;
while k<35000
    x(k)=x(k)/(1+4*sin(((k-30000)/5000)*3.14));
    k=k+1;
end


k=50000;
while k<length(x)
    x(k)=0;
    k=k+1;
end


k=15000;
while k<60000
    x(k)= x(k) - x(15000+(mod(k,1000)));
    k=k+1;
end

subplot(4,1,3), plot(x);
subplot(4,1,4), specgram(x, 128, Fs1);
sound(x,Fs1)

Projelerimiz için tıklayın Üye Olmadan Linkleri Göremezsiniz. Üye Olun veya Giriş Yapın
Sipariş ve Bilgi için satis@lugatek.com ile irtibata geçiniz.
Lütfen teknik sorularınızı forumda sorunuz özel mesaj göndermeyiniz

semiconnector

  • Teğmen
  • ***
  • İleti: 101
  • Teşekkür: 2
Ynt: Sinyal modelleme
« Yanıtla #25 : 14 Ağustos 2017, 10:45:51 »
Merhaba Hocam,
sanirim sorunu buldum ama ilerleyemiyorum. Filtrelemeler evet iyi ama sesin malesef karakteristigini degistirmiyor. Sanirim ilk önce karakteristigini degistirmek gerektiriyor. Ben Size dosya  yolluyorum buradan olmuyor. Program sesin karakteristik özelligini degistiriyor ama sadece temiz sesin üzerinde anlasilirlik olarak baya etkili oldugunu görüyorum. Kadin sesi nerede ise erkek sesi oluyor oda acayip :)  ama Hastanin sesi anlasilamayacak kadar yayiliyor boguk bir ses dinleniyor. Sesler dosyanin icerisinde. Acaba hastanin ses karakteristigini nasil düzenleyebiliriz ya da degisen sesi hangi parametreler ile degistirebiliriz. Yardimci olabilirseniz sevinirim.

Uykusuz

  • Administrator
  • Yarbay
  • ******
  • İleti: 2599
  • Teşekkür: 207
  • while(heart_rate>0){work();}
Ynt: Sinyal modelleme
« Yanıtla #26 : 14 Ağustos 2017, 11:33:56 »
Hocam kadın sesinin erkek gibi çıkmasının sebebi sample rate oranında sesi göndermiş olduğunuz kodda play edilmemesinden kaynaklanıyor.


Kod: Üye Olmadan Linkleri Göremezsiniz. Üye Olun veya Giriş Yapın
% playing all the sound files
for i = 1:3,
    if(i==1),
        display('Playing the original sound file...');
        soundsc(x,8000);
    elseif(i==2),
        display('Playing the 16 kbps CELP generated sound file...');
%         soundsc(xhat1,8000);
    elseif(i==3),
        display('Playing the 9.6 kbps CELP generated sound file...');
%         soundsc(xhat2,8000);
    end
end


Burada görüldüğü üzere play edilen kısımda sesler hep 8000 Fs ile play ediliyor. Kodu aşağıdaki gibi ufak bir değişiklik yaparak problemin düzeldiğini göreceksiniz.


Kod: Üye Olmadan Linkleri Göremezsiniz. Üye Olun veya Giriş Yapın
% playing all the sound files
for i = 1:3,
    if(i==1),
        display('Playing the original sound file...');
        soundsc(x,Fs);
    elseif(i==2),
        display('Playing the 16 kbps CELP generated sound file...');
    %     soundsc(xhat1,Fs);
    elseif(i==3),
        display('Playing the 9.6 kbps CELP generated sound file...');
     %    soundsc(xhat2,Fs);
    end
end


Hocam bu tür çalışmalar hep eldeki kaydedilmiş dataya özel çalışmalar. Gerçek yaşamda gerçek zamanlı olarak çalışması çok zor benim düşüncem. Sizin de bahsettiğiniz gibi sesin karakteristiği ile oynamak gerekiyor. Bu da uzmanlık alanı gerektiren bir iş.

Filtre bir yere kadar  ;D
Projelerimiz için tıklayın Üye Olmadan Linkleri Göremezsiniz. Üye Olun veya Giriş Yapın
Sipariş ve Bilgi için satis@lugatek.com ile irtibata geçiniz.
Lütfen teknik sorularınızı forumda sorunuz özel mesaj göndermeyiniz

semiconnector

  • Teğmen
  • ***
  • İleti: 101
  • Teşekkür: 2
Ynt: Sinyal modelleme
« Yanıtla #27 : 13 Eylül 2017, 13:01:56 »
Merhaba hocam,

ben size yolladigim sinyalin sorununu biraz arastirdim. Farketim ki sentez sonrasinda sinyal bozulma yasamadan karakteristigi ile oynadigim icin x akse 18000 yani 48000 Hz den 8000 Hz e düsüyormus. O yüzden de x aksede ki frekans degeri 18000 gözüküyor. Tamam buraya kadar sorun yok. Sizin onceden uyguladiginiz filtrelemede sorun yasayinca Programdan cikardim ve hece kisminda yumusatma yapmak icin degerleri ayarladim, denedim. Yine olmadi. Sizde bakabilirseniz sevinirim. Sesi ve Plot görüntüsünü ekde bulabilirsiniz.

Kod: Üye Olmadan Linkleri Göremezsiniz. Üye Olun veya Giriş Yapın
[y,Fs] = audioread('sentez_deneme_13.09.wav');
figure;
subplot(4,1,1),
plot(y);
subplot(4,1,2),
spectrogram(y(:,1), 1024, 3/4*1024, [], Fs, 'yaxis')
colormap (jet);

x = medfilt1(y,5);
 
k=1;
while k<18000
    x(k)=0;
    k=k+1;
end

k=7500;
while k<8000
    x(k)=x(k)/(1+6*sin(((k-7500)/500)*3.14));
    k=k+1;
end


k=18000;
while k<length(x)
    x(k)=0;
    k=k+1;
end


subplot(4,1,3),
plot(x);
subplot(4,1,4),
spectrogram(x(:,1), 1024, 3/4*1024, [], Fs, 'yaxis');
% colormap (hsv);
colormap (jet);
soundsc(x,Fs)