纳金网

标题: unity3d语音朗读扩展 [打印本页]

作者: 会飞的鱼    时间: 2012-3-14 14:30
标题: unity3d语音朗读扩展
Unity (Indie and Pro) can speak now. Sorry, only for Windows standalone  

Just place the Dll in the windows/system32 folder
The "VoiceSpeaker.CS" file
代码如下:
// Voice Speaker  (c) ZJP //

using UnityEngine;

using System;

using System.Collections;

using System.Runtime.InteropServices;
public class VoiceSpeaker : MonoBehaviour

{

   [DllImport ("Voice_speaker.dll", EntryPoint="VoiceAvailable")] private static extern int    VoiceAvailable();

   [DllImport ("Voice_speaker.dll", EntryPoint="InitVoice")]      private static extern void   InitVoice();

   [DllImport ("Voice_speaker.dll", EntryPoint="WaitUntilDone")]  private static extern int    WaitUntilDone(int millisec);

   [DllImport ("Voice_speaker.dll", EntryPoint="FreeVoice")]      private static extern void   FreeVoice();

   [DllImport ("Voice_speaker.dll", EntryPoint="GetVoiceCount")]  private static extern int    GetVoiceCount();

   [DllImport ("Voice_speaker.dll", EntryPoint="GetVoiceName")]   private static extern string GetVoiceName(int index);

   [DllImport ("Voice_speaker.dll", EntryPoint="SetVoice")]       private static extern void   SetVoice(int index);

   [DllImport ("Voice_speaker.dll", EntryPoint="Say")]            private static extern void   Say(string ttospeak);

   [DllImport ("Voice_speaker.dll", EntryPoint="SayAndWait")]     private static extern void   SayAndWait(string ttospeak);

   [DllImport ("Voice_speaker.dll", EntryPoint="SpeakToFile")]    private static extern int    SpeakToFile(string filename, string ttospeak);

   [DllImport ("Voice_speaker.dll", EntryPoint="GetVoiceState")]  private static extern int    GetVoiceState();

   [DllImport ("Voice_speaker.dll", EntryPoint="GetVoiceVolume")] private static extern int    GetVoiceVolume();

   [DllImport ("Voice_speaker.dll", EntryPoint="SetVoiceVolume")] private static extern void   SetVoiceVolume(int volume);

   [DllImport ("Voice_speaker.dll", EntryPoint="GetVoiceRate")]   private static extern int    GetVoiceRate();

   [DllImport ("Voice_speaker.dll", EntryPoint="SetVoiceRate")]   private static extern void   SetVoiceRate(int rate);

   [DllImport ("Voice_speaker.dll", EntryPoint="auseVoice")]     private static extern void   PauseVoice();

   [DllImport ("Voice_speaker.dll", EntryPoint="ResumeVoice")]    private static extern void   ResumeVoice();
   public int voice_nb = 0;
   void Start ()

   {

        if( VoiceAvailable()>0 )

        {

            InitVoice(); // init the engine

         Debug.Log ("Number of voice : "+GetVoiceCount()); // Number of voice

         

         SetVoice(voice_nb); // 0 to voiceCount - 1

         

         Debug.Log ("Voice name : "+GetVoiceName(voice_nb));

         Say("Hello. I can speak now. My name is "+GetVoiceName(voice_nb)+". Welcome to Unity");

        }

   }

   

    void OnDisable()

   {

        if( VoiceAvailable()>0 )

        {

            FreeVoice();

        }

    }

}

所调用的 dll文件在附件中
作者: 彬彬    时间: 2012-3-16 19:40

   





欢迎光临 纳金网 (http://go.narkii.com/club/) Powered by Discuz! X2.5