speech — iOS 上のテキスト読上げ

 スピーチモジュールは、iOS 上の音声合成と音声認識の機能を提供します。

 注)音声認識はiOS 10以上でサポートされています。音声データは認識処理のため Apple のサーバーに送信されるため、最初に recognize() 関数を呼び出した際には自動的にシステムからのプライバシーに関する警告が表示されます。

Examples

 異なる言語での音声合成です:

import speech
import time

def finish_speaking():
    # 音声合成が終了するまでアイドリング
    while speech.is_speaking():
        time.sleep(0.1)

# アメリカ英語:
speech.say('Hello World', 'en_US')
finish_speaking()
# スペイン語:
speech.say('Hola mundo', 'es_ES')
finish_speaking()
# ドイツ語:
speech.say('Hallo Welt', 'de_DE')
finish_speaking()
# 日本語:
speech.say('世界よ、こんにちは', 'ja')
finish_speaking()

 マイクロフォンから録音したテキストの音声認識です。(sound.Recorder を使用):

import speech
import sound
import dialogs

# sound.Recorder を使って音声を録音:
recorder = sound.Recorder('speech.m4a')
recorder.record()
# 'Finish'ボタンを押すまで録音を継続:
dialogs.alert('Recording...', '', 'Finish', hide_cancel_button=True)
recorder.stop()
try:
    result = speech.recognize('speech.m4a')
    print('=== Details ===')
    print(result)
    print('=== Transcription ===')
    print(result[0][0])
except RuntimeError as e:
    print('Speech recognition failed: %s' % (e,))

関数

speech.get_synthesis_languages()

 音声合成が可能な、全ての言語/地域を示すタグのリストを返します。say() 関数に使用する、言語を示す引数を設定するのに役立ちます。

speech.get_recognition_languages()

 音声認識が可能な、全ての言語/地域を示すタグのリストを返します。recognize() 関数に使用する、言語を示す引数を設定するのに役立ちます。

speech.say(text[, language, rate])

 引数 text で与えたテキストをシステム組込の読上げ音声により読み上げます。引数 language は、例えば'en-US'(アメリカ英語)のように、BCPー47 形式の言語と地域を示すタグで指定します。引数 language を省略した場合には、システムのデフォルト言語が使用されます。

 引数 rate によりテキストの読上げ速度を指定できます。値の範囲は0.0(最も遅い)〜1.0(最も早い)で、デフォルト値は0.5です。

speech.stop()

 音声合成を終了します。

speech.is_speaking()

 音声合成を行なっている場合には True を、そうでなければ False を返します。

speech.recognize(file_path[, language])

 引数 file_path で指定された音声ファイル中の読み上げられたテキストを文字起こしします。音声ファイルは大体1分よりも長くてはいけません。マイクロフォンからの入力を音声ファイルに録音するには、sound.Recorder を使用することができます。

 引数 language は任意で追加でき、地域の指定も可能(例:‘de-DE‘(ドイツのドイツ語)や'en-US'(アメリカ英語)です。)デフォルトでは現在システムで設定されている言語になります。

 戻り値は転記できた文字のリストで、可能性(信頼性)の高いものから順に並べたものになります。

 結果として得られる転記したリストは2つの要素を含むタプルです:1.ユニコード文字列としてのフルテキスト、2.個々の要素の詳細な情報(例えば、タイムスタンプ、信頼性のレベルなど)のディクショナリー型のリストになります。

 この関数は音声認識が失敗した場合にはランタイムエラーを生じます。引数 language が無効だったりサポート外の場合には、代わりにバリューエラーが発生するほか、音声ファイルが読み込めない場合にはIOエラーが発生します。