Komut dosyası: terminalden konuşmaya (Google) metin

Bugün sizlerle Google'ın konuşma motorunu kullanarak metni konuşmaya dönüştürmek için çok kullanışlı bir komut dosyası paylaşıyorum. Bu komut dosyasının temel avantajı, Google tarafından konulan 100 baytlık sınırı "aşması". Aslında dürüst olmak gerekirse, bu sınıra saygı duyuyor ancak tüm satırları otomatik olarak gönderiyor, bu da bu sınırlamanın kullanıcı tarafından fark edilmediği anlamına geliyor. Ancak en talepkar olanlar, dönüşümün Google Translate ile elde edebileceğimiz kalitede olmadığını, esas olarak bu sınırdan dolayı ve metnin tamamını tek seferde geçirmenin mümkün olmadığını fark edeceklerdir. Olumlu bir nokta olarak, bu betiğin aynı zamanda dönüştürülecek metnin dilini belirlemenize izin verdiği de eklenmelidir.

Açıklığa kavuşturduktan sonra, izlenecek adımların neler olduğunu görelim.

adımlar

1. - T2s.sh adında bir dosya oluşturun.

2. - Aşağıdaki içeriği kopyalayın:

#! / bin / bash ################################## # Dan Fountain'dan Konuşma Senaryosu # # UsemosLinux tarafından değiştirildi # # TalkToDanF@gmail.com # ################################# INPUT = $ * STRINGNUM = 0 ary = ($ {INPUT: 2}) echo "---------------------------" echo "Dan Fountain'dan Konuşma Metni" echo "TalkToDanF @ gmail.com "echo" --------------------------- "" $ {! ary [@]} "anahtar için SHORTTMP [ $ STRINGNUM] = "$ {SHORTTMP [$ STRINGNUM]} $ {ary [$ key]}" UZUNLUK = $ (echo $ {# SHORTTMP [$ STRINGNUM]}) #echo "kelime: $ anahtar, $ {ary [$ key]} "#echo" ekleniyor: $ STRINGNUM "eğer [[" $ UZUNLUK "-lt" 100 "]]; sonra #echo yeni satırdan başlıyor KISA [$ STRINGNUM] = $ {SHORTTMP [$ STRINGNUM]} başka STRINGNUM = $ (($ STRINGNUM + 1)) KISA [$ STRINGNUM] = "$ {ary [$ key]}" KISA [ $ STRINGNUM] = "$ {ary [$ key]}" fi "$ {! KISA [@]}" do #echo "satırındaki anahtar için yapıldı: $ anahtar: $ {KISA [$ anahtar]}" yankı " Oynatma satırı: $ (($ key + 1)) / $ (($ STRINGNUM + 1)) "mplayer" http://translate.google.com/translate_tts? yani = UTF-8 &tl = $ {1} & q = $ {SHORT [$ key]} "bitti

3. - Komut dosyasına yürütme izinleri verin:

sudo chmod + x t2s.sh

4. - Parametre olarak geçen komut dosyasını çalıştırın: a) metne karşılık gelen dil kodu, b) dönüştürülecek metin. Örneğin:

./t2s.sh tr Bu dönüştürülmesi çok ilginç bir metin.
İpucu: Bazı terminal emülatörleri, metni sürükleyerek yapıştırmanıza izin verir. Yani Firefox'ta bir metin seçip terminale sürüklemek mümkündür.

İşte bu, umarım beğenirsin.


Yorumunuzu bırakın

E-posta hesabınız yayınlanmayacak. Gerekli alanlar ile işaretlenmiştir *

*

*

  1. Verilerden sorumlu: Miguel Ángel Gatón
  2. Verilerin amacı: Kontrol SPAM, yorum yönetimi.
  3. Meşruiyet: Onayınız
  4. Verilerin iletilmesi: Veriler, yasal zorunluluk dışında üçüncü kişilere iletilmeyecektir.
  5. Veri depolama: Occentus Networks (AB) tarafından barındırılan veritabanı
  6. Haklar: Bilgilerinizi istediğiniz zaman sınırlayabilir, kurtarabilir ve silebilirsiniz.

  1.   Yoyo dijo

    Ne kadar havalı, çok teşekkür ederim 😉

    Ve kızın sesi ne kadar güzel, sanırım aşık oldum 😛

    1.    Darkguzz dijo

      Affedersiniz, Çince konusunda bana yardım eder misiniz? Çince karakterleri algılamıyor, sadece pinyin.

  2.   gölge dijo

    Bu, postayı kontrol eden bir komut dosyası veya uyandığınızda size tahmin ve bekleyen mesajları söyleyen kişiselleştirilmiş bir alarm için iyidir xD

  3.   Yoyo dijo

    Burada bir test videosu yaptım 😛 https://www.youtube.com/watch?v=O3IeK7PjA_0

    1.    hadi linux kullanalım dijo

      İyi! Teşekkür ederim!

  4.   Benctrox dijo

    Kulağa çok hoş geliyor, sadece mpg123 kurmam gerekiyordu 🙂

  5.   Portaro dijo

    Mpg123'ü yüklemek için tüp ama harika, eğer bazı kelimeleri kabul etmezse doğru bir tik harfi vb.

    EH EH

  6.   paul onur dijo

    Virüs veritabanı güncellendi (?)

    1.    jalbrhcp dijo

      apt update && ./t2.sh tr Virüs veritabanı güncellendi

  7.   Alexander dijo

    Hahaha Mükemmel, zaten bunun için bazı kullanımlarım var, şüphesiz şehvetli sesim =), paylaştığınız için teşekkürler.

  8.   Jorge Moratilla dijo

    Bir Mac OSX kullanıcısı olarak, mpg123'e sahip olmadığım için Script'i kullanmam mümkün olmadı, bu yüzden Script'i değiştirip VLC kullanarak, Mac OS X'te düzgün çalışmasını sağlayabiliriz.

    http://pastebin.com/C2Mkp1Qy

    1.    rolo dijo

      sorun, vlc'nin kesinlikle açık kalması ve yürütmeyi bitirdiğinde kapanmaması ve grafik arayüzün açılmasını önlemek için cvlc'yi kullanabilirsiniz.

      1.    rolo dijo

        koyulabilir
        cvlc –play-and-exit «https://translate.google.com/translate_tts?tl=$ái1-lex.europa.eu&q=$[SHORT[$key]}»
        böylece üremenin sonunda kapanır

  9.   Neysonv dijo

    Merhaba arkadaşlar bu hatayı alıyorum, bakalım birisi bana sorunun ne olduğunu söyleyecek mi
    Çalma hattı: 1/1
    HTTP isteği başarısız oldu: 404 Bulunamadı
    [mpg123.c: 610] hatası: http kaynağına erişim http://translate.google.com/translate_tts?tl=hola&q= başarısız oldu.

    1.    Neysonv dijo

      [kod] Çalma satırı: 1/1
      HTTP isteği başarısız oldu: 404 Bulunamadı
      [mpg123.c: 610] hatası: http kaynağına erişim http://translate.google.com/translate_tts?tl=hola&q= başarısız oldu. [/ kod]

    2.    hadi linux kullanalım dijo

      Sorun, komut dosyasını yanlış kullanmanızdır.
      Çalıştırdığınızda, gönderideki örnekte gösterildiği gibi metnin dilini ilk parametre olarak iletmeniz gerekir.
      Size başka bir örnek veriyorum:
      ./t2s.sh in Bu basit bir örnektir.
      Ts2.sh'den sonra "en" ("ingilizce" anlamına gelir, yani İngilizce'dir). İspanyolca için, "es" yi ve ardından dönüştürmek istediğiniz dildeki ifadeyi kullanın.
      Sarıl! Paul.

  10.   anonim dijo

    konuşma komutunu biliyor musun hayır? hehe

    espeak -v "merhaba" dır

    1.    hadi linux kullanalım dijo

      Evet ama aynı değil. Bu ses çok daha iyi. 🙂

      1.    anonim dijo

        katılıyoruz!
        Selamlar!

  11.   Sara dijo

    Mpg123 -q ile sorunları olanlar veya beğenmeyenler için mplayer'a geçebilirsiniz.

    mpg123 -q «http://translate.google.com/translate_tts?tl=$[1-lex.europa.eu&q=$[SHORT[$key]}»

    mplayer «http://translate.google.com/translate_tts?tl=$[1[&q=$[SHORT[$key]}»

    1.    Guido dijo

      Daha iyi "mplayer - gerçekten sessiz", böylece çıktıyı metinle doldurmaz

  12.   Jonathan dijo

    Uygulamalarım için google'ı kullanmak bana bir eldiven gibi uyuyor.
    http://github.com/alfa30/t2v

  13.   Darkguzz dijo

    Bir soru daha; Birisi bana çıkış sesini nasıl kaydedeceğimi söyleyebilir mi ???

    1.    Jose GDF dijo

      Size kendim cevap veriyorum, çünkü şimdi anladım. Mpg123 kullanarak, betiğin 38. satırını şu şekilde değiştirdim:

      mpg123 -q -w audio.wav «http://translate.google.com/translate_tts?tl=$[1-lex.europa.eu&q=$[SHORT[$key]}»

      -W audio.wav ekledim. Bu, cümlenin sesini içeren bir wav dosyası oluşturur, ancak bıraktığım gibi duyulmuyor. İfadeyi de duymak istiyorsanız, başka bir satır eklemeniz gerekir. İkiniz de şöyle görünürdünüz:

      mpg123 -q -w audio.wav «http://translate.google.com/translate_tts?tl=$[1-lex.europa.eu&q=$[SHORT[$key]}» &
      mpg123 -q «http://translate.google.com/translate_tts?tl=$[1-lex.europa.eu&q=$[SHORT[$key]}»

      Elbette daha verimli ve temiz başka bir şekilde yapılabilir, ama en azından benim için çalışıyor.

      1.    Darkguzz dijo

        Mükemmel José GDF, yönteminizi çok iyi sonuçlarla denedim, selamlar.

      2.    soya mikroplu dijo

        İkinci yürütmede trafikten tasarruf etmek için, ilk çalıştırmada oluşturduğunuz .wav dosyasını yeniden oluşturabilirsiniz.

      3.    Jose GDF dijo

        Evet, kurduğumuz bir oynatıcı kullanıyoruz. Örneğin, VLC Player ile şöyle olur:

        vlc ses.wav

        Kim diyor vlc, terminalle çalışanlar da dahil olmak üzere başka herhangi bir oyuncu söylüyor.

        Ve komut dosyası her kullanıldığında dosyanın üzerine yazmaktan kaçınmak için ad için bir değişken kullanılmalıdır. Kullanıcının başlamadan önce koyacağı (komutu okuyacağı) ad ... Ama bu kıvrımı kıvırmak olur 😀

  14.   Drako dijo

    PHP'de yaptım (bir Asterisk telefon sistemi için ses oluşturmak için *)


    $ url = 'http://translate.google.com/translate_tts?ie=UTF-8&q={sorgu}% 0A & tl = & prev = girdi ';

    if (count ($ argv) <= 1) {
    $ isim = basename ($ argv [0]);
    die ($ isim. 'kullanım:'. $ isim. '
    }
    dizi_shift ($ argv);
    $ sorgu = implode ('', $ argv);
    $ dosyaadı = str_replace (dizi ('', ',', '.'), '-', $ sorgu);
    $ dosyaadı = str_replace ('-', '-', $ dosya adı);

    $ url = str_replace ('{sorgu}', rawurlencode ($ sorgu), $ url);
    $ ch = curl_init ();
    curl_setopt ($ ch, CURLOPT_URL, $ url);
    curl_setopt ($ ch, CURLOPT_HEADER, 0);
    curl_setopt ($ ch, CURLOPT_RETURNTRANSFER, doğru);
    $ sonuç = curl_exec ($ ch);
    curl_close ($ ch);

    $ yol = getcwd (). '/'. $ dosya adı;
    file_put_contents ($ yol. '. mp3', $ sonuç);
    @exec ("sox {$ yol} .mp3 -b 16 -r 8000 -t wavpcm {$ yol} .wav");
    @unlink ($ yol. '. mp3');

    1.    Darkguzz dijo

      Bu komutla çıkış sesini kaydetmeyi zaten başardım:
      arecord ~ ​​/ zhongwen.mp3 & ./t2s.sh zh ni hao; fg
      ve sonunda ctrl + c kaydı durdurmak için.

      Hiç php kullanmadım
      Ama koşarken:
      php5 text-to-speech.php Merhaba
      konsola bunu barındırıyor:
      sox FAIL formatları: “mp3 ′ dosya uzantısı için işleyici yok

      Herhangi bir katkı çok takdir edilmektedir, daha sonra tekrar deneyeceğim.

  15.   Kirian dijo

    Google dil çevirmeni + metin-konuşma çevirisi için 2 uygulama:
    http://www.linuxhispano.net/2014/05/29/traductor-de-google-voz/

  16.   José dijo

    Dönüştürmenin en iyi yolu olduğunu düşünüyorum, ses Linux için diğer seçenekler kadar kötü değil> _
    Düz bir metin dosyasını okutmanın bir yolu var mı?
    Kitapların tamamını sese dönüştürmek çok faydalı olacaktır

  17.   Chuflas dijo

    Benim için işe yaramıyor, neden bilmiyorum, bu çıkıyor:

    xxxxx: ~ / Documents / Linux $ ./t2s.sh merhaba

    ---------
    Dan Fountain'dan Speech Script
    TalkToDanF@gmail.com
    ---------
    Çalma hattı: 1/1
    http_open: HTTP / 1.0 400 Hatalı İstek
    http://translate.google.com: Böyle bir dosya ya da dizin yok

    Mpg123 yükledim ve küçük testler yaptım ve hiçbir şey yapmadım…. Şimdiden teşekkürler

  18.   Ignacio Cruz Martinez dijo

    Merhaba, bu senaryo hem sesi dinlemek hem de çevirmenin sözlerini kaydetmek için bana çok iyi hizmet etti.

    Aslında, senaryoyu sahip olduğum bir ihtiyaca uyarlamak için değiştirdim: Metindeki (lemario) kelimelerin listesini konuşmaya dönüştürün; sesimi wav olarak kaydet, ogg'ye dönüştür ve okunan kelimeye göre isimlendir.

    Bunu, kelime listesinin bulunduğu dosyanın bulunduğu yolu ve ses sesinin kaydedilmesini istediğim dizini belirtmek için Kdialog kullanarak KDE'de yaptım.

    WAV'dan OGG'ye dönüştürme bittiğinde, benim için bir tarafta wav ve diğer tarafta ogg'nin kaydedildiği iki klasör oluşturur.

    İlk başta, aksanlı kelimeleri doğru okuyamadığım için kızmıştım, ancak koda "es & ie = UTF8" eklemeniz gerektiğini fark ettim. Bir an için karakter kodlamasını unuttum.

    Çalışırsa diye yaptığım betiğin kodunu bırakıyorum:

    ################################################## #####################

    #! / Bin / bash

    ###################################
    # Metinden konuşmaya ders #
    # Ignacio Cruz Martínez tarafından uyarlanmıştır #
    # posta gizlidir xD #
    ###################################

    Lemmary yolunu ve adını belirtmek için #KDE iletişim kutusu
    soyunarchivo = $ (kdialog –inputbox «Dosyanın yolunu ve adını girin (varsa bir uzantı ile):»)

    Ses dosyaları için hedef klasörü belirtmek için #KDE iletişim kutusu
    yol = $ (kdialog –inputbox «Ses sesini kaydetmek için yolu girin:»)

    # kediye kadar metin dosyasının tüm satırları okunur, her satır tek bir kelimeden oluşur
    $ (kedi $ soyunfile) i için
    do
    echo $ i

    # google translate kullanarak konuşmaya dönüştürme, aksanları okuyabilmesi için kodlamayı unutmayın
    mpg123 -q -w "$ yol" $ i.wav "http://translate.google.com/translate_tts?tl=es&ie=UTF8&q=$i"
    mpg123 -q "http://translate.google.com/translate_tts?tl=es&ie=UTF8&q=$i"

    # wav dosyalarını ogg'ye dönüştürmek için ffmpeg kullanma
    ffmpeg -i "$ yol" $ i.wav -acodec libvorbis "$ yol" $ i.ogg
    yapılmış

    # bu satırlarla, ses dosyalarını WAV veya OGG'de düzenlemek için klasörler oluşturulur
    mkdir "$ yol" WAV
    mv "$ yol" *. wav "$ yol" WAV

    mkdir "$ yol" OGG
    mv "$ yol" *. ogg "$ yol" OGG

    İşin bittiğini gösteren #KDE iletişim kutusu
    kdialog –msgbox 'İşlem sonlandırıldı'

    ################################################## ###################

    Şimdi, üretilen ses dosyalarını kullanma lisansı hakkında bilginiz var mı?

    Telif hakkı ve ilgili şeyler için sınırlama. Bu beni ilgilendiriyor çünkü bu ses dosyalarından bazılarını okuryazar olacak kişileri desteklemek için kullanmayı planlıyorum, temelde bu kar amacı gütmeyen bir proje.

    Ve bu aracın İspanyolca dili için en iyi tonlamaya sahip olmasıdır, ne yazık ki Linux'ta benzer bir şey yoktur. Mbrola, Gespeaker ile bir araya gelmem için bana çok fazla sorun yaşattı.

    Teşekkürler ve görüşürüz

    1.    hadi linux kullanalım dijo

      Hiçbir fikrim yok ... Google Translator lisanslarına bakmak zorunda değil.

  19.   Armando dijo

    Komut dosyası benim için çalışmadı, görünüşe göre URL ile ilgili bir sorun, ilgilenenler için bu doğru URL:
    http://translate.google.com/translate_tts?tl=es&q=Hola

  20.   Juajo dijo

    Merhaba! Komut dosyanızla testler yapıyorum ve onu çalıştırırken bana sesi bulamadığını söyledi, bu yüzden URL'yi girdim ve Bay Google bir captcha koymuş gibi görünüyor ...

  21.   ' dijo

    komut dosyasını güncelle