Script: chuyển văn bản thành giọng nói (Google) từ thiết bị đầu cuối

Hôm nay tôi chia sẻ với các bạn một script rất hữu ích để chuyển văn bản thành giọng nói bằng công cụ giọng nói của Google. Ưu điểm chính của script này là nó "vượt qua" giới hạn 100 byte do Google áp đặt. Trên thực tế, thành thật mà nói, nó tôn trọng giới hạn này nhưng gửi tất cả các dòng tự động, có nghĩa là giới hạn này sẽ không được người dùng chú ý. Tuy nhiên, những người khó tính nhất sẽ nhận thấy rằng chuyển đổi không có chất lượng giống như chuyển đổi mà chúng tôi có thể nhận được trong Google Dịch, chủ yếu là do giới hạn này và không thể chuyển toàn bộ văn bản trong một lần. Như một điểm tích cực, cần nói thêm rằng tập lệnh này cũng cho phép bạn chỉ định ngôn ngữ của văn bản sẽ được chuyển đổi.

Sau khi làm rõ, chúng ta hãy xem các bước để làm theo là gì.

Các bước

1.- Tạo một tệp với tên t2s.sh.

2.- Sao chép nội dung sau:

#! / bin / bash #################################### # Speech Script by Dan Fountain # # Sửa đổi bởi UsemosLinux # # TalkToDanF@gmail.com # ################################### INPUT = $ * STRINGNUM = 0 ary = ($ {INPUT: 2}) echo "---------------------------" echo "Bài phát biểu của Dan Fountain" echo "TalkToDanF @ gmail.com "echo" --------------------------- "cho khóa trong" $ {! ary [@]} "do SHORTTMP [ $ STRINGNUM] = "$ {SHORTTMP [$ STRINGNUM]} $ {ary [$ key]}" LENGTH = $ (echo $ {# SHORTTMP [$ STRINGNUM]}) #echo "từ: $ key, $ {ary [$ key]} "#echo" đang thêm vào: $ STRINGNUM "if [[" $ LENGTH "-lt" 100 "]]; sau đó #echo bắt đầu dòng mới SHORT [$ STRINGNUM] = $ {SHORTTMP [$ STRINGNUM]} khác STRINGNUM = $ (($ STRINGNUM + 1)) SHORTTMP [$ STRINGNUM] = "$ {ary [$ key]}" RÚT GỌN [ $ STRINGNUM] = "$ {ary [$ key]}" đã xong cho khóa trong dòng "$ {! SHORT [@]}" do #echo ": $ key là: $ {SHORT [$ key]}" echo " Dòng đang phát: $ (($ key + 1)) / $ (($ STRINGNUM + 1)) "mplayer" http://translate.google.com/translate_tts? tức là = UTF-8 &tl = $ {1} & q = $ {SHORT [$ key]} "xong

3.- Cấp quyền thực thi cho tập lệnh:

sudo chmod + x t2s.sh

4.- Thực thi tập lệnh truyền dưới dạng các tham số: a) mã ngôn ngữ tương ứng với văn bản, b) văn bản được chuyển đổi. Ví dụ:

./t2s.sh vi Đây là văn bản rất thú vị để chuyển đổi.
Mẹo: một số trình giả lập đầu cuối cho phép bạn dán văn bản bằng cách kéo nó. Vì vậy, có thể chọn một văn bản trong Firefox và kéo nó vào thiết bị đầu cuối.

Vậy là xong, hy vọng các bạn sẽ thích.


Để lại bình luận của bạn

địa chỉ email của bạn sẽ không được công bố. Các trường bắt buộc được đánh dấu bằng *

*

*

  1. Chịu trách nhiệm về dữ liệu: Miguel Ángel Gatón
  2. Mục đích của dữ liệu: Kiểm soát SPAM, quản lý bình luận.
  3. Hợp pháp: Sự đồng ý của bạn
  4. Truyền thông dữ liệu: Dữ liệu sẽ không được thông báo cho các bên thứ ba trừ khi có nghĩa vụ pháp lý.
  5. Lưu trữ dữ liệu: Cơ sở dữ liệu do Occentus Networks (EU) lưu trữ
  6. Quyền: Bất cứ lúc nào bạn có thể giới hạn, khôi phục và xóa thông tin của mình.

  1.   Yoyo dijo

    Thật tuyệt, cảm ơn bạn rất nhiều 😉

    Và cô gái có giọng hát tuyệt vời làm sao, tôi nghĩ tôi đã yêu 😛

    1.    u tối dijo

      Xin lỗi, bạn có thể giúp tôi với tiếng Trung không? Nó không phát hiện được ký tự Trung Quốc, chỉ có bính âm.

  2.   Bóng tối dijo

    Điều này cũng tốt cho một tập lệnh kiểm tra thư hoặc cho một cảnh báo được cá nhân hóa mà khi thức dậy sẽ cho bạn biết dự báo và các tin nhắn đang chờ xử lý xD

  3.   Yoyo dijo

    Ở đây tôi đã làm một video thử nghiệm 😛 https://www.youtube.com/watch?v=O3IeK7PjA_0

    1.    hãy sử dụng linux dijo

      Tốt! Cảm ơn bạn!

  4.   bentrox dijo

    Nghe có vẻ rất tốt, tôi chỉ phải cài đặt mpg123 🙂

  5.   người khuân vác dijo

    Ống để cài đặt mpg123 nhưng thật tuyệt, nếu nó không chấp nhận một số từ, nó sẽ nói một ký tự dấu ngã bên phải, v.v.

    EH EH

  6.   paul Honorrato dijo

    Cơ sở dữ liệu virus đã được cập nhật (?)

    1.    jalbrhcp dijo

      apt update && ./t2.sh vi Cơ sở dữ liệu virus đã được cập nhật

  7.   Alexander dijo

    Hahaha Tuyệt vời, tôi đã có một số công dụng cho nó, giọng nói gợi cảm không nghi ngờ gì =), cảm ơn vì đã chia sẻ.

  8.   Jorge Moratilla dijo

    Là người dùng Mac OSX, tôi không thể sử dụng Tập lệnh vì tôi không bật mpg123, vì vậy bằng cách sửa đổi Tập lệnh và sử dụng VLC, chúng tôi có thể để nó hoạt động bình thường trên Mac OS X.

    http://pastebin.com/C2Mkp1Qy

    1.    rolo dijo

      vấn đề là vlc chắc chắn vẫn bật và không đóng khi nó kết thúc quá trình thực thi và bạn có thể sử dụng cvlc để ngăn giao diện đồ họa mở

      1.    rolo dijo

        nó có thể được đặt
        cvlc –play-and-exit «https://translate.google.com/translate_tts?tl=$[$key]}»
        để nó đóng lại khi kết thúc quá trình tái tạo

  9.   neysonv dijo

    Xin chào các bạn, tôi gặp lỗi này, hãy xem có ai đó cho tôi biết vấn đề là gì không
    Dòng chơi: 1 của 1
    Yêu cầu HTTP không thành công: 404 Không tìm thấy
    [mpg123.c: 610] error: Truy cập vào tài nguyên http http://translate.google.com/translate_tts?tl=hola&q= sự thất bại.

    1.    neysonv dijo

      [code] Dòng phát: 1 trong số 1
      Yêu cầu HTTP không thành công: 404 Không tìm thấy
      [mpg123.c: 610] error: Truy cập vào tài nguyên http http://translate.google.com/translate_tts?tl=hola&q= sự thất bại. [/ code]

    2.    hãy sử dụng linux dijo

      Vấn đề là bạn đang sử dụng tập lệnh sai.
      Khi bạn chạy nó, bạn phải chuyển ngôn ngữ của văn bản làm tham số đầu tiên, như được hiển thị trong ví dụ trong bài đăng.
      Tôi cho bạn một ví dụ khác:
      ./t2s.sh trong Đây là một ví dụ đơn giản.
      Lưu ý rằng sau ts2.sh nó theo sau "en" (có nghĩa là "tiếng anh", tức là tiếng Anh). Đối với tiếng Tây Ban Nha, hãy sử dụng "es" và sau đó là cụm từ trong ngôn ngữ bạn muốn chuyển đổi.
      Ôm! Paul.

  10.   vô danh dijo

    bạn biết lệnh nói không? hehe

    espeak -v là-«xin chào»

    1.    hãy sử dụng linux dijo

      Có nhưng không giống nhau. Giọng này hay hơn rất nhiều. 🙂

      1.    ghi chú ẩn danh dijo

        chúng tôi đồng ý!
        Chúc mừng!

  11.   Sara dijo

    Đối với những người gặp vấn đề với mpg123 -q hoặc không thích nó, bạn có thể chuyển sang mplayer

    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

      Tốt hơn "mplayer –really-yên tĩnh" để nó không lấp đầy đầu ra bằng văn bản

  12.   Jonathan dijo

    Một ý tưởng rất hay để sử dụng google cho các ứng dụng của tôi phù hợp với tôi như một chiếc găng tay.
    http://github.com/alfa30/t2v

  13.   u tối dijo

    Một câu hỏi nữa; Ai đó có thể cho tôi biết làm thế nào để ghi lại âm thanh đầu ra ???

    1.    Jose GDF dijo

      Tôi trả lời chính bạn, bởi vì tôi chỉ cần có nó. Sử dụng mpg123, tôi đã sửa đổi dòng 38 của tập lệnh, trông như thế này:

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

      Tôi đã thêm -w audio.wav. Điều này tạo ra một tệp wav có âm thanh của cụm từ, nhưng khi tôi rời khỏi nó, nó không được nghe thấy. Nếu bạn cũng muốn nghe cụm từ, bạn sẽ phải thêm một dòng khác. Cả hai bạn sẽ trông như thế này:

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

      Chắc chắn nó có thể được thực hiện theo một cách khác hiệu quả và sạch sẽ hơn, nhưng ít nhất nó cũng phù hợp với tôi.

      1.    u tối dijo

        José GDF xuất sắc, tôi đã thử phương pháp của bạn với kết quả rất tốt, xin chào.

      2.    đậu nành dijo

        Để tiết kiệm lưu lượng trong lần thực thi thứ hai, bạn có thể tạo lại .wav mà bạn đã tạo trong lần thực thi đầu tiên

      3.    Jose GDF dijo

        Vâng, bằng cách sử dụng một trình phát mà chúng tôi đã cài đặt. Ví dụ, với VLC Player, nó sẽ là:

        vlc-audio.wav

        Vâng, ai nói vlc, nói bất kỳ người chơi nào khác, kể cả những người chơi hoạt động bằng thiết bị đầu cuối.

        Và để tránh ghi đè tệp mỗi khi sử dụng tập lệnh, một biến nên được sử dụng cho tên. Tên mà người dùng sẽ đặt (đọc lệnh) trước khi bắt đầu ... Nhưng điều đó sẽ khiến bạn bị cong

  14.   drako dijo

    Tôi đã làm điều đó bằng PHP (để tạo âm thanh cho hệ thống điện thoại Asterisk *)

    <?php
    $ url = 'http://translate.google.com/translate_tts?ie=UTF-8&q={query}% 0A & tl = is & prev = input ';

    if (count ($ argv) <= 1) {
    $ name = basename ($ argv [0]);
    die ($ name. 'use:'. $ name. '
    }
    array_shift ($ argv);
    $ query = implode ('', $ argv);
    $ filename = str_replace (array ('', ',', '.'), '-', $ query);
    $ filename = str_replace ('-', '-', $ filename);

    $ url = str_replace ('{query}', rawurlencode ($ query), $ url);
    $ ch = curl_init ();
    curl_setopt ($ ch, CURLOPT_URL, $ url);
    curl_setopt ($ ch, CURLOPT_HEADER, 0);
    curl_setopt ($ ch, CURLOPT_RETURNTRANSFER, true);
    $ result = curl_exec ($ ch);
    curl_close ($ ch);

    $ path = getcwd (). '/'. $ filename;
    file_put_contents ($ path. '. mp3', $ result);
    @exec ("sox {$ path} .mp3 -b 16 -r 8000 -t wavpcm {$ path} .wav");
    @unlink ($ đường dẫn. '. mp3');

    1.    u tối dijo

      Làm thế nào về việc tôi đã quản lý để ghi lại âm thanh đầu ra bằng lệnh này:
      arecord ~ ​​/ zhongwen.mp3 & ./t2s.sh zh ni hao; fg
      và ở cuối ctrl + c để dừng ghi.

      Tôi chưa bao giờ sử dụng php
      Nhưng khi chạy:
      php5 text-to-speech.php là Xin chào
      konsola tổ chức điều này:
      định dạng sox FAIL: không có trình xử lý cho phần mở rộng tệp `mp3 ′

      Bất kỳ đóng góp nào cũng được đánh giá cao, tôi sẽ thử lại sau.

  15.   Kirian dijo

    2 ứng dụng cho trình dịch ngôn ngữ của Google + dịch văn bản sang giọng nói:
    http://www.linuxhispano.net/2014/05/29/traductor-de-google-voz/

  16.   José dijo

    Tôi nghĩ đó là cách tốt nhất để chuyển đổi, giọng nói không tệ như các tùy chọn khác cho Linux> _
    Có cách nào để làm cho nó đọc một tệp văn bản thuần túy không?
    Sẽ rất hữu ích khi chuyển toàn bộ sách sang âm thanh

  17.   dép lê dijo

    Chà, nó không hiệu quả với tôi, tôi không biết tại sao, điều này xuất hiện:

    xxxxx: ~ / Documents / Linux $ ./t2s.sh xin chào

    ---------
    Kịch bản bài phát biểu của Dan Fountain
    TalkToDanF@gmail.com
    ---------
    Dòng chơi: 1 của 1
    http_open: HTTP / 1.0 400 Yêu cầu không hợp lệ
    http://translate.google.com: Không có tập tin hoặc thư mục

    Tôi đã cài đặt mpg123 và tôi đã thực hiện một số thử nghiệm nhỏ và không có gì cả…. Cảm ơn trước

  18.   Ignacio Cruz Martinez dijo

    Xin chào, script này đã phục vụ tôi rất tốt, vừa để nghe âm thanh vừa để ghi lại lời của người dịch.

    Trên thực tế, tôi đã sửa đổi kịch bản để điều chỉnh nó theo nhu cầu mà tôi có: Chuyển danh sách các từ trong văn bản (lemario) thành lời nói; lưu giọng nói của tôi trong wav, chuyển đổi sang ogg và đặt tên chúng theo từ đã đọc.

    Tôi đã làm điều này trong KDE bằng cách sử dụng Kdialog để chỉ định đường dẫn chứa tệp có danh sách từ và thư mục mà tôi muốn lưu âm thanh giọng nói.

    Khi quá trình chuyển đổi WAV sang OGG kết thúc, nó sẽ tạo ra hai thư mục nơi lưu wav ở một bên và ogg ở bên kia.

    Lúc đầu, nó làm tôi tức giận vì nó không đọc các từ có dấu một cách chính xác, nhưng tôi thấy rằng bạn phải thêm "es & ie = UTF8" trong mã. Trong một khoảnh khắc, tôi đã quên mã hóa ký tự.

    Tôi để lại cho bạn mã của tập lệnh mà tôi đã tạo trong trường hợp nó giúp bạn:

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

    #! / bin / bash

    ###################################
    # Bài giảng chuyển văn bản thành giọng nói #
    # Phỏng theo Ignacio Cruz Martínez #
    # thư là bí mật xD #
    ###################################

    Hộp thoại #KDE để chỉ định đường dẫn và tên của chanh
    Sounarchivo = $ (kdialog –inputbox «Nhập đường dẫn và tên của tệp (với phần mở rộng nếu có):»)

    Hộp thoại #KDE để chỉ định thư mục đích cho tệp thoại
    path = $ (kdialog –inputbox «Nhập đường dẫn để lưu âm thanh giọng nói:»)

    # qua cat tất cả các dòng của tệp văn bản đều được đọc, mỗi dòng gồm một từ duy nhất
    cho tôi bằng $ (cat $ đậu nành)
    do
    echo $ i

    # chuyển đổi sang giọng nói bằng cách sử dụng google dịch, đừng quên mã hóa để nó đọc trọng âm
    mpg123 -q -w "$ path" $ 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"

    # using ffmpeg để chuyển đổi các tệp wav sang ogg
    ffmpeg -i "$ path" $ i.wav -acodec libvorbis "$ path" $ i.ogg
    thực hiện

    #with những dòng này, các thư mục được tạo để sắp xếp các tệp thoại trong WAV hoặc OGG
    mkdir "$ path" WAV
    mv "$ path" *. wav "$ path" WAV

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

    Hộp thoại #KDE cho biết công việc đã hoàn thành
    kdialog –msgbox 'Quá trình đã kết thúc'

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

    Bây giờ, có ai trong số các bạn có kiến ​​thức về giấy phép sử dụng các tệp thoại được tạo không?

    Giới hạn bản quyền và những thứ liên quan. Điều này khiến tôi quan tâm vì tôi dự định sử dụng một số tệp giọng nói này để hỗ trợ những người sắp trở thành người biết chữ, về cơ bản đây là một dự án phi lợi nhuận.

    Và nó là công cụ này có ngữ điệu tốt nhất cho ngôn ngữ Tây Ban Nha, tiếc là trong Linux không có gì tương tự. Mbrola đã gây cho tôi rất nhiều khó khăn khi thiết lập cùng với Gespeaker.

    Cảm ơn và hẹn gặp lại.

    1.    hãy sử dụng linux dijo

      Không có ý tưởng ... sẽ phải xem xét các giấy phép của Google Translator.

  19.   Armando dijo

    Tập lệnh không hoạt động đối với tôi, rõ ràng đó là sự cố liên quan đến URL, đối với những người quan tâm thì đây là URL chính xác:
    http://translate.google.com/translate_tts?tl=es&q=Hola

  20.   cười lớn dijo

    Xin chào! Tôi đã thực hiện kiểm tra với tập lệnh của bạn và khi thực thi nó, nó nói với tôi rằng nó không thể tìm thấy âm thanh, vì vậy tôi đã nhập URL và có vẻ như ông Google đã đặt một hình ảnh xác thực ...

  21.   ' dijo

    cập nhật kịch bản