OpenJTalk on Windows10

10916 단어 OpenJTalkPython

개시하다


Windows 10으로 OpenJTalk을 시험해 보고 싶지만, 0부터 필요한 환경을 정리하기 위해 누구에게 좋은 점이 있는지 적어 두겠습니다.
제목과 같이 환경 구축부터 파이톤이 일본어를 할 수 있는 곳까지 설명한다.

컨디션

  • windows 10
  • Visual Studio 2019 Community
  • OpenJTalk 1.09
  • Python 3.7
  • 환경 구축 준비


    Windows에서 OpenJTalk을 실행하려면 자체적으로 구축해야 하기 때문에 환경을 조정해야 합니다.

    Visual Studio 2019 Community 설치


    이것은 본제가 아니니, 내가 거두어들일게.
    Visual Studio 2019 Community 설치
    Visual Studio 2019는 여기. 웹 사이트에서 설치합니다.
    설치 프로그램이 시작된 후 C++의 데스크톱 개발을 확인하고 설치를 누르십시오.
    설치가 완료되면 를 한 번 시작합니다.
    ↓ 이 사이트를 참고하도록 허락해 주십시오. 감사합니다.
    https://qiita.com/Gaccho/items/f748f59784ff68d7a474

    구성 설정


    명령 프롬프트를 시작하여 다음 두 명령을 실행합니다.
    $ cd C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Auxiliary\Build
    
    $ vcvarsall.bat x64
    

    nmake 설정


    명령 프롬프트nmake에서 명령을 실행할 때 실행할 수 없는(명령이 인식되지 않은 오류) 메시지가 나타나면 환경 변수 경로nmake.exe를 통과해야 합니다.
    나는 아래의 경로를 통과했다.C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.24.28314\bin\Hostx64\x64

    OpenJTalk 설치


    여기서부터 여기. 사이트를 참고하였습니다. 감사합니다.

    소스 코드 가져오기OpenJTalk,hts-engineAPI


    우선 OpenJTalk1.09를 획득여기.에서 선택하면 아래 링크를 즉시 다운로드할 수 있습니다.
    필요한 소리 합성용 프로그램 라이브러리 hts 컴파일여기.에서 enginneAPI를 선택하면 OpenJTalk와 마찬가지로 아래 링크를 통해 바로 다운로드할 수 있습니다.
    다운로드 확장 open_jtalk-1.09.tar.gzc:\temp\open_jtalk-1.09enginneAPIc:\temp\open_jtalk-1.09\hts_engine_API-1.10를 확장하면 컴파일할 때 문제가 적습니다.

    nmake의 컴파일


    방금 명령 알림에서 nmake 을 사용했는데, 지금 컴파일합니다.

    hts_engine_API-1.10의 컴파일


    일단 hts.engine_API-1.10부터 시작하려면 다음 세 가지 명령을 실행합니다.
    완료 후 c:\htsengine_API에 파일을 생성합니다.
    $ cd c:\temp\open_jtalk-1.09\hts_engine_API-1.10
    $ nmake /f Makefile.mak
    $ nmake /f Makefile.mak install
    

    open_jtalk-1.09의 번역


    다음은 오픈.jtalk-1.09의 컴파일을 진행합니다. 다음 세 가지 명령을 실행하십시오. 완료되면 c:\open파일이 jtalk에 만들어졌습니다.
    $ cd c:\temp\open_jtalk-1.09
    $ nmake /f Makefile.mak
    $ nmake /f Makefile.mak install
    
    마지막으로 혼란스러운 문자열이 표시되지만, 잠시 신경 쓸 필요가 없습니다. 자세한 상황 여기.
    여기에서 c:\openjtalk\bin\open_jtalk.생성exe.

    Voice 데이터 가져오기


    MMDAgent
    https://sourceforge.net/projects/mmdagent/files/MMDAgent_Example/MMDAgent_Example-1.6/
    부터, MMDAgentExample-1.6.zip, Voice/mei/*를 다운로드합니다.c:\open htvoice미리 복사해 두다.
    미라는 여자애?네 가지 감정 데이터.

    이것으로 끝낼 준비를 하다.

    Open JTalk 테스트 수행


    일본어 파일을 입력합니다.txt c:\openjtalk\bin에서
    다음 명령을 실행하십시오.
    $ cd c:\open\jtalk\bin
    $ open_jtalk -m mei_normal.htsvoice -x ../dic -ow output.wav input.txt
    
    같은 목록에 있습니다.웨이브를 만들면 성공할 수 있습니다. 더블 클릭으로 재생할 수 있는지 확인해 주십시오. 이 때 인코딩의 영향으로 일본어로 하면 순조롭게 진행될 수 없습니다. 사실 저 혼자 잘 할 수 없습니다.

    파이썬부터 OpenJTalk 수행


    Windows에서 Pytohon에서 OpenJTalk을 실행할 때 winsound 모듈을 사용합니다. 또한, 이번에 Windows에서 생성된 사전은shift-jis이기 때문에pythn의 내부 인코딩을 stdin에 전달할 때 encoding을 변환해야 합니다.
    jtalk.py
    
    #coding: utf-8
    import subprocess
    from datetime import datetime
    import winsound
    
    def jtalk(t):
        # depend on your install folder
        OPENJTALK_BINPATH = 'c:/open_jtalk/bin'
        OPENJTALK_DICPATH = 'c:/open_jtalk/dic'
        # VOICEPATH -> can change mei voice
        OPENJTALK_VOICEPATH = 'c:/open_jtalk/bin/mei_normal.htsvoice'
        open_jtalk=[OPENJTALK_BINPATH + '/open_jtalk.exe']
        mech=['-x',OPENJTALK_DICPATH]
        htsvoice=['-m',OPENJTALK_VOICEPATH]
        speed=['-r','1.0']
        outwav=['-ow','open_jtalk.wav']
        cmd=open_jtalk+mech+htsvoice+speed+outwav
        c = subprocess.Popen(cmd,stdin=subprocess.PIPE)
    
        # convert text encoding from utf-8 to shitf-jis
        c.stdin.write(t.encode('shift-jis'))
        c.stdin.close()
        c.wait()
    
        # play wav audio file with winsound module
        winsound.PlaySound('open_jtalk.wav', winsound.SND_FILENAME)
    
    
    def say_datetime():
        # get datetime and call jtalk
        d = datetime.now()
        text = '%s月%s日、%s時%s分%s秒' % (d.month, d.day, d.hour, d.minute, d.second)
        jtalk(text)
    
    if __name__ == '__main__':
        say_datetime()
    
    이 설정을 임의의 디렉터리 Python jtalk.py 에서 시작합니다. 시작 방법은 당연히 자유입니다. 만약 컴퓨터가 나에게 날짜와 시간을 알려줄 수 있다면 성공할 것입니다.

    Python 모듈로 사용


    같은 디렉터리 (여기도 물론 자유롭습니다) 에서 상기 파일 (jtalk.py의 jtalk) 을 호출합니다. 또한, 매개 변수는 말을 하게 하는 문자이기 때문에 그것을 지정합니다. u'' 인코딩도 지정됩니다.
    test.py
    import jtalk
    jtalk.jtalk(u'これでおしまい')
    
    그게 다야.
    시간이 길어졌지만 감사합니다!

    사이트 축소판 그림


    https://qiita.com/Gaccho/items/f748f59784ff68d7a474
    https://qiita.com/kkoba84/items/b828229c374a249965a9

    좋은 웹페이지 즐겨찾기