[PowerShell] Google Cloud Text-to-Speech로 텍스트에서 음성 파일 만들기

하고 싶은 일



텍스트에서 자연스러운 음성을 생성하고 싶습니다. 무료로 부드러운 웹 서비스 등이 있지만 부자연스러운 것뿐.
그 중에서도 Google의 Text to Speech는 가장 자연스럽게 발음해 주었다.
Google의 Text to Speech를 사용하여 wav 파일을 생성합니다. PowerShell을 사용해보십시오.

Cloud Text-to-Speech
h tps : // c ぉ d. 오, ぇ. 이 m/에서 xt-s-pe ch/? hl = 그럼

Google Cloud Platform 설정



Google 튜토리얼에 따르면 거의 할 수 있습니다.
htps : // c ぉ d. 오, ぇ. 이 m / xt - s-pe ch / cs / 쿠이 cks rt-p 여과 l? hl = 그럼
  • Google Cloud Platform 사용 등록
  • Cloud 프로젝트 만들기
  • Cloud Text-to-Speech API 사용.
  • 인증 설정 (여기서 .json 파일이 생성되므로 나중에 사용)
  • Google cloud SDK 설치

  • PowerShell 스크립트



    거의 이것을 사용하게 했다.
    htps //w w. 미타보. 이 m/2020/05/아이. HTML
    (연결 없음)

    그대로 변환할 수 없었던 것과 wav 파일을 원했기 때문에, 2점 스크립트는 변경하고 있다.
  • Google 튜토리얼에 쓰여진 것처럼 인증 설정에서 생성된 .json 경로를 스크립트에 넣어야 한다.
  • $env:GOOGLE_APPLICATION_CREDENTIALS = "C:\xxxxx\xxxxxx\xxxxxx.json"
    
  • 원래 스크립트는 mp3로 변환하는 것이 었습니다. wav로 하고 싶을 때는, mp3를 wav로 재기록하는 것만으로 좋다.
  • certutil -decode -f synthesize-output-base64.txt synthesized-audio.wav
    
  • 먹이는 json 파일(request.json)은 같은 폴더에 둔다. Cloud Text-to-Speech 사이트에서 말하고 싶은 말을 입력하고 show json을 눌러 표시된 Request Body를 그대로 복사합니다.


  • request.json은 UTF-8로 저장하지 마십시오. (저장 할 때 UTF-8 선택)

  • 스크립트


    $env:GOOGLE_APPLICATION_CREDENTIALS = "C:\xxxxx\xxxxx\xxxx.json"
    
    $cred = gcloud auth application-default print-access-token
    
    $headers = @{ "Authorization" = "Bearer $cred" }
    
    Invoke-WebRequest `
      -Method POST `
      -Headers $headers `
      -ContentType: "application/json; charset=utf-8" `
      -InFile request.json `
      -Uri "https://texttospeech.googleapis.com/v1/text:synthesize" | Select-Object -Expand Content > lf_synthesize-output-base64.txt
    [string]::Join("`r`n",(Get-Content .\lf_synthesize-output-base64.txt)) | Set-Content .\crlf_synthesize-output-base64.txt
    findstr /r "audioContent" crlf_synthesize-output-base64.txt > find_lf_synthesize-output-base64.txt
    $audioline = [string]::Join("`r`n",(Get-Content .\find_lf_synthesize-output-base64.txt))
    $wqcontent = $audioline.split(":")
    $noaudioline = $wqcontent[1]
    $wqcontent = $noaudioline.trim()
    $content = $wqcontent.trim('"')
    $content > .\lfcontent_synthesize-output-base64.txt
    [string]::Join("`r`n",(Get-Content .\lfcontent_synthesize-output-base64.txt)) | Set-Content .\synthesize-output-base64.txt
    certutil -decode -f synthesize-output-base64.txt synthesized-audio.wav
    

    참고


  • Google 튜토리얼보다 세분화되었습니다.

  • htps : // bg. 아빠 r. jp/우ぇb/9893/

    · Google Cloud SDK 설치 정보

    htps : // c ぉ d. 오, ぇ. 이 m/sdk/도 cs/인 s타르? hl = 그럼

    좋은 웹페이지 즐겨찾기