強火で進め

このブログではプログラム関連の記事を中心に書いてます。

Unity 上に日本語のテキスト読み上げ機能を簡単に実装する(Mac限定)


TL上で Unity 上でテキスト読み上げ機能の要望が上がっていたのでちょっと簡単に実装可能か色々調査していたところ、 Twitter 上で System.Diagnostics.Process を使うというアイディアを教えて貰いました。

System.Diagnostics.Process はコマンドラインから実行するのと同等の処理を行える API (C言語の system() の様なもの)です。

Mac の場合にはこのAPIを使って say コマンドを呼び出し、喋らせる事が可能です。

早速、使い方を検索してみた所、Unity では以下のページに書かれている方法で実現可能でした。Macのアプリにしても動作しました。

Run unix executable file from Unity
http://forum.unity3d.com/threads/40475-Run-unix-executable-file-from-Unity

こちらの方法は Web Player 版では動作しません。そもそもエラーが出てビルド出来ません。

まぁ、 Web からローカルのデータを自由に触れちゃうのでセキュリティ的に許可してる訳ないですよね。

以下のコードでテキストフィールドに入力された内容を読み上げる事が出来ます。

using UnityEngine;
using System.Collections;
using System.Diagnostics;

public class Test : MonoBehaviour {
	
	private string talk_text = "こんにちは";
	
	void OnGUI() {
		talk_text = GUI.TextField(new Rect(5, 5, 200, 20), talk_text);
		if (GUI.Button(new Rect(5, 30, 200, 50), "test")) {
			Process process = new Process();
			process.StartInfo.FileName="say";
			process.StartInfo.Arguments = talk_text;
			process.StartInfo.RedirectStandardError=true;
			process.StartInfo.RedirectStandardOutput=true;
			process.StartInfo.CreateNoWindow=true;
			process.StartInfo.WorkingDirectory=Application.dataPath+"/..";
			process.StartInfo.UseShellExecute=false;
			process.Start();
		}
	}
}

プロジェクトはこちらにアップして有ります。

テストする場合には日本語の声に変更してから実行して下さい。変更方法はこちらを参照下さい。

なお、こちらのページによると Mac のこの機能のライセンスは以下の様に成ってるみたいです。

Voices Subject to the terms and conditions of this License, you may use the system voices included in the Apple Software (“System Voices”) (i) while running the Apple Software and (ii) to create your own original content and projects for your personal, non-commercial use. No other use of the System Voices is permitted by this License, including but not limited to the use, reproduction, display, performance, recording, publishing or redistribution of any of the System Voices in a profit, non-profit, public sharing or commercial context.

こちらの記事でも少しだけ言及されています。

Macで利用可能で低価格でアプリに組み込んで商用利用な日本語音声合成エンジン(TTS)が有れば商用作品もつくれるんですけどどこか出さないですかねぇ? 例えはクリプトンさんとか!!