部分と全体

知識の巣窟

Pythonにしゃべらせてみたよ

Windowsに入っているSAPIエンジン*1でしゃべらせて、WaveとTextに保存できるようにしました。

日本語と、英語でスピーカーを変えられます。(メニューで最初に出てくるので数字で選んでね) テキストをコピペするとしゃべって音声とテキストをファイルに保存します。

まぁ、ずんだもん等に比べるとたどたどしいですけど、プレゼンに埋め込んだりできるのでそこそこ使えると思います。

# -*- coding: utf-8 -*-
"""
@author: kz713hatena
"""
# In[1]:
# =============================================================================
# Speak text input
# =============================================================================

import win32com.client
from datetime import datetime
now = datetime.now()
today = now.date()

#Menu
print('Menu: \n')

#Select Langage
Lang=input('Please choose speaking language | 1:JP, 2:EN -  ')

if Lang == str(1):
    Speaker = "Microsoft Sayaka"
    print('Japanese Mode')
elif Lang == str(2):
    Speaker = "Microsoft Zira"
    print('English Mode')

#input speak contents
contents = input('what do I speak? ')

#speaking
sapi = win32com.client.Dispatch("SAPI.SpVoice")
cat  = win32com.client.Dispatch("SAPI.SpObjectTokenCategory")
cat.SetID(r"HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Speech_OneCore\Voices", False)
v = [t for t in cat.EnumerateTokens() if t.GetAttribute("Name") == Speaker]

if v:
    print('Speaking...')

    oldv = sapi.Voice
    sapi.Voice = v[0]
    sapi.Speak(contents)
    sapi.Voice = oldv

    print('Done')

# In[2]:   
# =============================================================================
# Create Voice Wave File and text file
# =============================================================================

if v:
    filename = f'{today} - {contents[:12]}'
    print('saved: ' + f'{filename}.wav')
    fs = win32com.client.Dispatch("SAPI.SpFileStream")
    fs.Open(f'{filename}.wav', 3)
    sapi.AudioOutputStream = fs
    oldv = sapi.Voice
    sapi.Voice = v[0]
    sapi.Speak(contents)
    sapi.Voice = oldv
    fs.Close()

with open(f'{filename}.txt', "w") as f:
    f.write(contents)
    f.close()

入出力画面

*1:Speech Application Programming Interface(Speech API、SAPI)は、Windowsアプリケーションで音声認識音声合成を使うためにマイクロソフトが開発したAPI。このAPIには様々なバージョンがあり、Speech SDK の一部として出荷されたものもあれば、Windows OS 自体の一部としてリリースされたものもある。SAPI を使ったアプリケーションとしては、Microsoft OfficeMicrosoft Agent、Microsoft Speech Server などがある。

一般にどのバージョンのAPIであっても、様々な言語で音声合成/認識機能を使ったアプリケーションを書くための標準インタフェースを提供している。また、サードパーティがSAPI対応の音声認識エンジンや音声合成エンジンを開発することも可能となっている。原則として、それらエンジンが定義されたインタフェースに準拠している限り、マイクロソフト提供のエンジンの代替として使うことが可能である。

Speech API は自由に再配布可能なコンポーネントであり、それを使っているアプリケーションと同梱させることが可能である。音声認識/合成エンジンの多くも自由に再配布可能である。