月度归档:2011年01月

AS2----声音(Sound类)语句

Sound 类使您可以在影片中添加声音,并控制这些声音。
    在调用 Sound 类的方法之前,您必须使用构造函数 new Sound 创建 Sound 对象。(详见九
    方法:对象名称 = new Sound();
    实例:mysound = new Sound();
    一、添加声音

    1、从库中添加声音

    用法:mysound.attachSound("idName")
    参数:idName 库中导出声音的标识符。该标识符位于“链接属性”对话框
    注解:将库中链接标识符为idName 的声音,附加到对象mysound中。
          打开“链接属性”对话框方法:指向库中的声音元件-右键-选






























“链接”--“为
ActionScript 导出”左边方框打勾-输入标识符-确定。
    2、从外部添加声音

    用法:mysound.loadSound("url", isStreaming)
    参数:url MP3 声音文件的网址。
          isStreaming 一个布尔值,指示声音是声音流 (true) 还是事件声音 (false)
    注解:网址为url的mp3 以声音流或事件声音方式下载附加到对象mysound中。
          事件声音在完全加载后才能播放。
          声音流在下载的同时播放。当接收的数据足以启动解压缩程序时,播放开始。
    实例:mysound.loadSound( "http://www.gz-travel.net/music/mp3/爱心(日语版).mp3",










































true);
    二、播放声音

    用法:mysound.start([secondOffset, loop])
    参数:secondOffset 一个可选参数,用于从某个特定点开始播放声音。例如,如果您有一个









30 秒的声音,而您希望该声音从中间开始播放,可将 secondOffset 参数指定为 15。
          loop 一个可选参数,用于指定声音连续播放的次数。
    注解:如果未指定参数,则从开头开始播放最近附加的声音;或者从参数 secondOffset 指定












的声音点处开始播放。
    实例:(1)mysound.start();(2)mysound.start(15);
    三、停止声音播放

    用法:mysound.stop(["idName"])
    参数:idName 一个可选参数,用于指定要停止播放的某个特定声音。idName 参数必须置于引












号 (" ") 之中。
    注解:如果未指定参数,则停止当前播放的所有声音,否则只停止在 idName 参数中指定的声



音。
    实例:(1)mysound.stop();(2)mysound.stop("mp3-02");
    四、声音音量控制

    用法:mysound.setVolume(volume)
    参数:volume 一个从 0 到 100 之间的数字,表示声音级别。100 为最大音量,而 0 为没有












音量。默认设置为 100。
    实例:mysound.setVolume(50);音量设置为 50%。
    五、声音的左右声道控制

    用法:mysound.setPan(pan);
    参数:pan 一个整数,指定声音的左右均衡。有效值的范围为 -100 到 100,其中 -100 表示












仅使用左声道,100 表示仅使用右声道,而 0 表示在两个声道间平均地均衡声音。
    注解:确定声音在左右声道(扬声器)中是如何播放的。对于单声道声音,pan 确定声音通过



哪个扬声器(左或右)进行播放。
    实例:mysound.setPan(-100);关闭右声道中的声音
    六、读取声音的长度

    用法:mysound.duration
    注解:属性(只读);声音的持续时间,以毫秒为单位。
    实例:ms=mysound.duration/1000;ms的值是声音长度为xx秒。
    七、读取已播放声音的长度

    用法:mysound.position
    注解:属性(只读);声音已播放的毫秒数。如果声音是循环的,则在每次循环开始时,位置
























将被重置为 0。
    实例:bfms=mysound.position/1000;bfms的值是声音已播放的长度为xx秒。
    八、其他声音(Sound类)语句

    Sound.getBytesLoaded() 返回为指定声音加载的字节数。
    Sound.getBytesTotal() 以字节为单位返回声音的大小。
    Sound.getPan() 返回上一个 setPan() 调用的值。
    Sound.getTransform() 返回上一个 setTransform() 调用的值。
    Sound.getVolume() 返回上一个 setVolume() 调用的值。
    Sound.setTransform() 设置要在每个扬声器中播放的每个声道(左声道和右声道)的音量。
    Sound.ID3 提供对作为 MP3 文件一部分的元数据的访问。
    Sound.onID3 每次有新的 ID3 数据可用时调用。
    Sound.onLoad 加载声音时调用。
    Sound.onSoundComplete 声音停止播放时调用。
    九、Sound 类的构造函数

    用法:new Sound([target])
    参数:target Sound 对象操作的影片剪辑实例。此参数是可选的。
    说明:构造函数;为指定的影片剪辑创建新的 Sound 对象。如果没有指定目标实例,则
















































Sound 对象控制影片中的所有声音。   
    下面的示例当按下鼠标左键时创建一个 Sound 对象 my_sound,并从库中为其附加具有标识符






L7 的声音。它还调用setVolume() 和 setPan() 来控制 L7 声音。
    onClipEvent(mouseDown) {
    // 创建一个声音对象
      my_sound = new Sound(this);
    // 从库中附加声音
      my_sound.attachSound("L7");
    //将音量设置为 50%
      my_sound.setVolume(50);
    //关闭右声道中的声音
      my_sound.setPan(-100);
    //从声音的第 30 秒开始播放并播放 5 遍
      my_sound.start(30, 5);
    }














































 





































































































































































































































































C#3.0基于Speech.Synthesis调整语音朗读语调范例

using System;
using System.Speech.Synthesis;
namespace Speech_Synthesis
{
    public partial class Window1 : System.Windows.Window
    {
        public Window1()
        {
            InitializeComponent();

            SpeechSynthesizer synthesizer = new SpeechSynthesizer();
            PromptBuilder promptBuilder = new PromptBuilder();

            promptBuilder.AppendTextWithHint("尹成", SayAs.SpellOut);
            promptBuilder.AppendText("尹成大哥毕业于山东大学.");

         
            promptBuilder.AppendBreak(new TimeSpan(0, 0, 2));
           
            promptBuilder.AppendText("尹成大哥是谁");
            promptBuilder.AppendTextWithHint(DateTime.Now.ToString("hh:mm"), SayAs.Time);
           
            // Pause for 2 seconds
            promptBuilder.AppendBreak(new TimeSpan(0, 0, 2));
           
            promptBuilder.AppendText("尹成大哥硕士毕业于中科院?");
           
            promptBuilder.StartVoice("Microsoft Sam");
            promptBuilder.AppendTextWithHint("queue", SayAs.SpellOut);
            promptBuilder.EndVoice();
           
            promptBuilder.AppendText("Do it faster!");
           
            promptBuilder.StartVoice("Microsoft Sam");
            promptBuilder.StartStyle(new PromptStyle(PromptRate.ExtraFast));
            promptBuilder.AppendTextWithHint("queue", SayAs.SpellOut);
            promptBuilder.EndStyle();
            promptBuilder.EndVoice();

            // Speak all the content in the PromptBuilder
            synthesizer.SpeakAsync(promptBuilder);
        }
    }
}

--------------------------------------------------------------

语音合成

1、使用语音合成

        speechsynthesizer
synth = new
speechsynthesizer
();

 

            //

获取本机上所安装的所有的voice的名称

            string
voicestring = ""
;

 

            foreach
(installedvoice
iv in
synth.getinstalledvoices())

            {

                voicestring += iv.voiceinfo.name + ","
;

            }

 

            //

根据voice的name属性确定要使用的voice

            synth.selectvoice("vw lily"
);         

            //

根据文字内容合成语音

            synth.speak(this
.textbox1.text);

            synth.speak("

中华人民共和国湖北省"
);

2
构建ssml

                       

            promptbuilder
myprompt = new
promptbuilder
();

 

            //start the main speaking style

            promptstyle
mainstyle = new
promptstyle
();

            mainstyle.rate = promptrate
.medium;

            mainstyle.volume = promptvolume
.loud;

            myprompt.startstyle(mainstyle);

 

            //alert the listener

            myprompt.appendaudio(new
uri
(

                "file://c:""windows""media""notify.wav"
), "attention!"
);   //appendaudio

功能使 wav 文件与输出结合,

                 //

假如未找到 wav 文件,可以使用一个等效文本文件,即第二个参数

            myprompt.appendtext("here are some important messages."
);

 

            //here's the first important message

            myprompt.appendtextwithpronunciation("winfx"
, "w

?
n
?
f
?
ks"
); //appendtextwithpronunciation

功能答应您指定单词的正确发音

            myprompt.appendtext("is a great platform."
);

 

            //and the second one

            myprompt.appendtextwithhint("asp"
, sayas
.spellout); // appendtextwithhint

功能为缩写词作标记

            //sayas

枚举值举例: sayas.numberordinal sayas.daymonth sayas.spellout sayas.telephone sayas.text sayas.time24等

            myprompt.appendtext(

                "is an acronym for active server pages. whereas an asp is a snake."
);

 

            myprompt.appendbreak();

 

           //let's emphasise how important these messages are

            promptstyle
interimstyle = new
promptstyle
();

            interimstyle.emphasis = promptemphasis
.strong;

            myprompt.startstyle(interimstyle);

            myprompt.appendtext("please remember these two things."
);

            myprompt.endstyle();

 

            //then we can revert to the main speaking style

            myprompt.appendbreak();

            myprompt.appendtext("thank you"
);

 

            myprompt.endstyle();

            //now let's get the synthesizer to render this message

            speechsynthesizer
synth = new
speechsynthesizer
();

            synth.selectvoice("vw lily"
);

            synth.speakasync(myprompt); //

与speak不同的异步方法
 

 

3
将构建的ssml保存在ssml文件中

            using
(streamwriter
promptwriter = new
streamwriter
("c:""prompt.ssml"
))

            {

                promptwriter.write(myprompt.toxml());

            }

4
将构建的语音保存为一个wav文件中

//
若前面使用了speakasync方法,则不能输出为wav文件。

            //

必须等到语音播完后才能输出           

            synth.setoutputtowavefile("c:""message.wav"
);

            synth.speak(myprompt);

            synth.setoutputtonull();

5
根据ssml文件中保存的信息还原为语音

            speechsynthesizer
synth = new
speechsynthesizer
();

            promptbuilder
savedprompt = new
promptbuilder
();

            savedprompt.appendssml("c:""prompt.ssml"
);

            synth.selectvoice("vw lily"
);

            synth.speak(savedprompt);

 

6

通过语音进度事件高光显示正在阅读的文本位置


          
speechsynthesizer
synth = new
speechsynthesizer
();

 
synth.speakprogress += new
eventhandler
<speakprogresseventargs
>(synth_speakprogress);

void
synth_speakprogress(object
sender, speakprogresseventargs
e)

       
{

           
this
.textbox1.hideselection = false
;          


           
this
.textbox1.select(e.characterposition,e.charactercount );

       
}