스크립트 : 터미널에서 텍스트 음성 변환 (Google)

오늘 저는 Google 음성 엔진을 사용하여 텍스트를 음성으로 변환하는 매우 유용한 스크립트를 공유합니다. 이 스크립트의 가장 큰 장점은 Google에서 지정한 100 바이트 제한을 "회피"한다는 것입니다. 사실 솔직히이 제한을 존중하지만 모든 줄을 자동으로 전송하므로 사용자가이 제한을 알아 차리지 못합니다. 그러나 가장 까다로운 사람들은 변환이 Google 번역에서 얻을 수있는 것과 동일한 품질이 아니라는 것을 알 수 있습니다. 주로이 제한 때문에 전체 텍스트를 한 번에 전달할 수 없습니다. 긍정적 인 점으로,이 스크립트를 사용하여 변환 할 텍스트의 언어를 지정할 수도 있다는 점을 추가해야합니다.

명확히 한 후 따라야 할 단계가 무엇인지 보겠습니다.

단계

1.- 이름이 t2s.sh 인 파일을 생성합니다.

2.- 다음 내용을 복사하십시오.

#! / bin / bash ############################### # Dan Fountain의 음성 스크립트 # # UsemosLinux에 의해 수정 됨 # # TalkToDanF@gmail.com # ############################## INPUT = $ * STRINGNUM = 0 ary = ( $ {INPUT : 2}) echo "---------------------------"echo "Dan Fountain의 음성 스크립트"echo "TalkToDanF @ gmail .com "echo"--------------------------- "for key in"$ {! ary [@]} "do SHORTTMP [$ STRINGNUM] = "$ {SHORTTMP [$ STRINGNUM]} $ {ary [$ key]}"LENGTH = $ (echo $ {# SHORTTMP [$ STRINGNUM]}) #echo "단어 : $ 키, $ {ary [$ 키 ]} "#echo"추가 : $ STRINGNUM "if [["$ LENGTH "-lt"100 "]]; then #echo 새 줄 시작 SHORT [$ STRINGNUM] = $ {SHORTTMP [$ STRINGNUM]} else STRINGNUM = $ (($ STRINGNUM + 1)) SHORTTMP [$ STRINGNUM] = "$ {ary [$ key]}"SHORT [ $ STRINGNUM] = "$ {! SHORT [@]}"의 키에 대해 "$ {ary [$ key]}"fi 완료 do #echo "line : $ key is : $ {SHORT [$ key]}"echo " 재생 라인 : $ (($ key + 1)) / $ (($ STRINGNUM + 1)) "mplayer"http://translate.google.com/translate_tts? 즉 = UTF-8 &tl = $ {1} & q = $ {SHORT [$ key]} "완료

3.- 스크립트에 실행 권한을 부여합니다.

sudo chmod + x t2s.sh

4.- 매개 변수로 전달하는 스크립트를 실행합니다. a) 텍스트에 해당하는 언어 코드, b) 변환 할 텍스트. 예를 들면 :

./t2s.sh ko 이것은 변환하기에 매우 흥미로운 텍스트입니다.
팁 : 일부 터미널 에뮬레이터에서는 텍스트를 끌어서 붙여 넣을 수 있습니다. 따라서 Firefox에서 텍스트를 선택하여 터미널로 드래그 할 수 있습니다.

그게 다야, 즐기시기 바랍니다.


코멘트를 남겨주세요

귀하의 이메일 주소는 공개되지 않습니다. 필수 필드가 표시되어 있습니다 *

*

*

  1. 데이터 책임자 : Miguel Ángel Gatón
  2. 데이터의 목적 : 스팸 제어, 댓글 관리.
  3. 합법성 : 귀하의 동의
  4. 데이터 전달 : 법적 의무에 의한 경우를 제외하고 데이터는 제 XNUMX 자에게 전달되지 않습니다.
  5. 데이터 저장소 : Occentus Networks (EU)에서 호스팅하는 데이터베이스
  6. 권리 : 귀하는 언제든지 귀하의 정보를 제한, 복구 및 삭제할 수 있습니다.

  1.   유유

    얼마나 멋진가요, 대단히 감사합니다 😉

    그리고 그 소녀의 아름다운 목소리는 내가 사랑에 빠진 것 같아요 😛

    1.    Darkguzz

      실례합니다, 중국어로 도와 주실 수 있나요? 한자는 감지하지 않고 병음 만 감지합니다.

  2.   그림자

    이것은 메일을 확인하는 스크립트 또는 깨어 났을 때 예측 및 보류중인 메시지를 알려주는 개인화 된 알람에 유용합니다. xD

  3.   유유

    여기에 테스트 비디오를 만들었습니다 😛 https://www.youtube.com/watch?v=O3IeK7PjA_0

    1.    리눅스를 사용하자

      좋은! 감사합니다!

  4.   Benctrox

    아주 좋은 것 같네요. mpg123 만 설치하면 됐어요 🙂

  5.   Portaro

    mpg123을 설치하는 튜브이지만, 어떤 단어를 받아들이지 않으면 올바른 물결표 등을 말합니다.

    EH EH

  6.   파블로 호노 라토

    바이러스 데이터베이스가 업데이트되었습니다 (?)

    1.    잘브르hcp

      apt update && ./t2.sh ko 바이러스 데이터베이스가 업데이트되었습니다.

  7.   알렉산더

    Hahaha 훌륭합니다, 나는 이미 그것을 사용하고 있습니다, 의심의 여지없이 관능적 인 목소리 =), 공유해 주셔서 감사합니다.

  8.   호르헤 모라 틸라

    Mac OSX 사용자는 mpg123이 없어 스크립트를 사용할 수 없었기 때문에 스크립트를 수정하고 VLC를 사용하면 Mac OS X에서 올바르게 작동하도록 둘 수 있습니다.

    http://pastebin.com/C2Mkp1Qy

    1.    ROLO

      문제는 vlc가 확실히 켜져 있고 실행이 완료되면 닫히지 않으며 cvlc를 사용하여 그래픽 인터페이스가 열리지 않도록 할 수 있다는 것입니다.

      1.    ROLO

        그것은 넣을 수 있습니다
        cvlc –play-and-exit«https://translate.google.com/translate_tts?tl=$[$key]}»
        복제가 끝날 때 닫히도록

  9.   Nysonv

    안녕하세요 여러분,이 오류가 발생했습니다. 누군가가 문제가 무엇인지 알려주는지 살펴 보겠습니다.
    플레이 라인 : 1 of 1
    HTTP 요청 실패 : 404 찾을 수 없음
    [mpg123.c : 610] 오류 : http 리소스에 대한 액세스 http://translate.google.com/translate_tts?tl=hola&q= 실패했습니다.

    1.    Nysonv

      [코드] 재생 라인 : 1/1
      HTTP 요청 실패 : 404 찾을 수 없음
      [mpg123.c : 610] 오류 : http 리소스에 대한 액세스 http://translate.google.com/translate_tts?tl=hola&q= 실패했습니다. [/ 코드]

    2.    리눅스를 사용하자

      문제는 스크립트를 잘못 사용하고 있다는 것입니다.
      실행할 때 게시물의 예제와 같이 텍스트의 언어를 첫 번째 매개 변수로 전달해야합니다.
      또 다른 예를 들겠습니다.
      ./t2s.sh in 이것은 간단한 예입니다.
      ts2.sh 뒤에는 "en"( "english", 즉 영어를 의미 함)이 뒤 따릅니다. 스페인어의 경우 "es"를 사용한 다음 변환하려는 언어로 된 구문을 사용하십시오.
      포옹! 폴.

  10.   anonimo

    당신은 말하기 명령을 알고 있습니까? 헤헤

    espeak -v is-the«안녕하세요»

    1.    리눅스를 사용하자

      예,하지만 동일하지는 않습니다. 이 목소리가 훨씬 낫다. 🙂

      1.    익명 메모

        우리는 동의한다!
        안녕하십니까!

  11.   사라

    mpg123 -q에 문제가 있거나 마음에 들지 않는 사람들은 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.    귀도

      더 나은 "mplayer –really-quiet"로 출력을 텍스트로 채우지 않습니다.

  12.   조나단

    내 응용 프로그램에 Google을 사용하는 좋은 아이디어는 장갑처럼 나에게 적합합니다.
    http://github.com/alfa30/t2v

  13.   Darkguzz

    질문이 하나 더 있습니다. 누군가가 출력 오디오를 녹음하는 방법을 말해 줄 수 있습니까 ???

    1.    호세 GDF

      내가 방금 받았기 때문에 직접 대답합니다. mpg123을 사용하여 스크립트의 38 행을 다음과 같이 수정했습니다.

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

      -w audio.wav를 추가했습니다. 이렇게하면 구절의 오디오가 포함 된 wav 파일이 생성되지만 내가 남겨둔 것처럼 들리지 않습니다. 구절도 듣고 싶다면 다른 줄을 추가해야합니다. 둘 다 다음과 같이 보일 것입니다.

      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]}»

      분명히 다른 더 효율적이고 깨끗한 방법으로 할 수 있지만 적어도 저에게는 효과적입니다.

      1.    Darkguzz

        훌륭한 José GDF, 아주 좋은 결과, 인사로 당신의 방법을 시도했습니다.

      2.    대두

        두 번째 실행에서 트래픽을 저장하기 위해 첫 번째 실행에서 생성 한 .wav를 재현 할 수 있습니다.

      3.    호세 GDF

        예, 우리가 설치 한 플레이어를 사용합니다. 예를 들어 VLC Player를 사용하면 다음과 같습니다.

        vlc 오디오.wav

        글쎄, 누가 vlc라고 말하면 터미널에서 작동하는 플레이어를 포함하여 다른 플레이어가 말합니다.

        그리고 스크립트를 사용할 때마다 파일을 덮어 쓰지 않도록 이름에 변수를 사용해야합니다. 시작하기 전에 사용자가 입력 할 이름 (읽기 명령) ...하지만 그것은 컬링이 될 것입니다 😀

  14.   드라코

    나는 PHP로했다 (Asterisk 전화 시스템을위한 오디오를 만들기 위해 *)

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

    if (count ($ argv) <= 1) {
    $ 이름 = 기본 이름 ($ argv [0]);
    die ($ name. 'usage :'. $ name. '
    }
    array_shift ($ argv);
    $ 쿼리 = 내파 ( '', $ argv);
    $ filename = str_replace (배열 ( '', ',', '.'), '-', $ 쿼리);
    $ 파일 이름 = str_replace ( '-', '-', $ 파일 이름);

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

    $ 경로 = getcwd (). '/'. $ 파일 이름;
    file_put_contents ($ 경로. '. mp3', $ 결과);
    @exec ( "sox {$ 경로} .mp3 -b 16 -r 8000 -t wavpcm {$ 경로} .wav");
    @unlink ($ 경로. '. mp3');

    1.    Darkguzz

      이 명령을 사용하여 출력 오디오를 이미 녹음 한 것은 어떻습니까?
      arecord ~ ​​/ zhongwen.mp3 & ./t2s.sh zh ni hao; fg
      그리고 끝에서 ctrl + c는 녹음을 중지합니다.

      나는 PHP를 사용한 적이 없다
      그러나 실행할 때 :
      php5 text-to-speech.php는 Hello입니다.
      콘솔라는 다음을 호스팅합니다.
      sox FAIL 형식 : 파일 확장자`mp3 '에 대한 핸들러 없음

      모든 기여에 감사드립니다. 나중에 다시 시도하겠습니다.

  15.   키리 안

    Google 언어 번역기 + 텍스트 음성 번역을위한 2 개의 앱 :
    http://www.linuxhispano.net/2014/05/29/traductor-de-google-voz/

  16.   호세

    변환하는 가장 좋은 방법이라고 생각합니다. 음성은 Linux의 다른 옵션만큼 나쁘지 않습니다.> _
    일반 텍스트 파일을 읽을 수있는 방법이 있습니까?
    책 전체를 오디오로 변환하는 것이 매우 유용 할 것입니다.

  17.   Chuflas

    글쎄, 그것은 나를 위해 작동하지 않습니다. 이유를 모르겠습니다.

    xxxxx : ~ / 문서 / Linux $ ./t2s.sh는 안녕하세요

    ---------
    Dan Fountain의 음성 스크립트
    TalkToDanF@gmail.com
    ---------
    플레이 라인 : 1 of 1
    http_open : HTTP / 1.0 400 잘못된 요청
    http://translate.google.com: 해당 파일 또는 디렉토리 없음

    나는 mpg123을 설치했고 약간의 테스트를했지만 아무것도하지 않았다. 미리 감사드립니다

  18.   이그나시오 크루즈 마르티네즈

    안녕하세요,이 스크립트는 소리를 듣고 번역가의 말을 녹음하는 데 매우 유용했습니다.

    사실 필자는 필요에 맞게 스크립트를 수정했습니다. 텍스트 (lemario)의 단어 목록을 음성으로 변환합니다. 내 목소리를 wav로 저장하고, ogg로 변환하고 읽은 단어에 따라 이름을 지정합니다.

    KDE에서 Kdialog를 사용하여 단어 목록이있는 파일의 경로와 음성 오디오를 저장할 디렉터리를 지정했습니다.

    WAV에서 OGG 로의 변환이 완료되면 한쪽에 wav가 있고 다른쪽에 ogg가 저장되는 두 개의 폴더가 생성됩니다.

    처음에는 악센트가있는 단어를 제대로 읽지 못해서 화가 났지만 코드에 "es & ie = UTF8"을 추가해야한다는 것을 알았습니다. 잠시 동안 문자 인코딩을 잊어 버렸습니다.

    도움이 될 경우를 대비하여 만든 스크립트 코드를 남겨 둡니다.

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

    #! / bin / bash

    ################################
    # 텍스트 음성 변환 강의 #
    # Ignacio Cruz Martínez 각색 #
    # 메일은 비밀 xD #
    ################################

    lemmary의 경로와 이름을 지정하는 #KDE 대화 상자
    soyunarchivo = $ (kdialog –inputbox«파일의 경로와 이름을 입력하십시오 (확장자가있는 경우 확장자 포함) :»)

    음성 파일의 대상 폴더를 지정하는 #KDE 대화 상자
    path = $ (kdialog –inputbox«음성 오디오를 저장할 경로 입력 :»)

    # through cat 텍스트 파일의 모든 행을 읽으며 각 행은 단일 단어로 구성됩니다.
    for i in $ (cat $ soyunfile)
    do
    에코 $ i

    # Google 번역을 사용하여 음성으로 변환, 악센트를 읽도록 인코딩을 잊지 마세요
    mpg123 -q -w "$ 경로"$ 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"

    # ffmpeg를 사용하여 wav 파일을 ogg로 변환
    ffmpeg -i "$ 경로"$ i.wav -acodec libvorbis "$ 경로"$ i.ogg

    #이 라인을 사용하면 WAV 또는 OGG로 음성 파일을 구성하기 위해 폴더가 생성됩니다.
    mkdir "$ 경로"WAV
    mv "$ 경로"*. wav "$ 경로"WAV

    mkdir "$ 경로"OGG
    mv "$ 경로"*. ogg "$ 경로"OGG

    작업이 완료되었음을 나타내는 #KDE 대화 상자
    kdialog –msgbox '프로세스 종료 됨'

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

    이제 생성 된 음성 파일을 사용할 수있는 라이선스에 대해 알고있는 사람이 있습니까?

    저작권 및 관련 사항에 대한 제한. 이 음성 파일 중 일부를 사용하여 글을 읽을 수있는 사람들을 지원할 계획이기 때문에 흥미 롭습니다. 기본적으로 비영리 프로젝트입니다.

    그리고이 도구는 스페인어에 가장 좋은 인토네이션을 가지고 있다는 것입니다. 불행히도 리눅스에서는 비슷한 것이 없습니다. Mbrola는 Gespeaker와 함께 설정하는 데 많은 어려움을 겪었습니다.

    감사합니다.

    1.    리눅스를 사용하자

      Google 번역기 라이선스를 살펴 봐야 할 것 같습니다.

  19.   아르만도

    스크립트가 나를 위해 작동하지 않았습니다. 분명히 URL과 관련된 문제입니다. 관심있는 사람들에게는 이것이 올바른 URL입니다.
    http://translate.google.com/translate_tts?tl=es&q=Hola

  20.   Juajo

    여보세요! 나는 당신의 스크립트로 테스트를 해왔고 그것을 실행할 때 오디오를 찾을 수 없다는 메시지를 받았으므로 URL을 입력했으며 Google 씨가 보안 문자를 넣은 것 같습니다 ...

  21.   '

    스크립트 업데이트