将object类型转换为byte[]数组

        进行语音合成和播放,其中语音合成使用的是微软的TTS:

                        Object strbuffer = new IntPtr();
                        SpeechVoiceSpeakFlags SpFlags = SpeechVoiceSpeakFlags.SVSFlagsAsync;//异步朗读
                        SpVoice voice = new SpVoice();
                        voice.Rate = -3;//语速

                        SpMemoryStream spmem = new SpMemoryStream();//内存流
                        spmem.Format.Type = SpeechAudioFormatType.SAFTCCITT_ALaw_8kHzMono;//语音格式为A-law 8KHz

                        voice.AudioOutputStream = spmem;//输出到内存中
                        voice.Speak(InvName, SpFlags);
                        voice.WaitUntilDone(50000);//等待完成或者超时
                    
                        strbuffer = spmem.GetData();//获取内存中的语音内容
     返回的strbuffer为object类型,而播放函数StartPlay(chnnelno i,byte[] content,int startposition , uint LengthOfBytes)中播放内容content类型为byte[],所以需要进行类型转换。

转换代码如下:

                        BinaryFormatter se = new BinaryFormatter();
                        MemoryStream memStream = new MemoryStream();
                        se.Serialize(memStream, strbuffer);
                        byte[] bobj = memStream.ToArray();
                        memStream.Close();
                        //播放
                        uint length = (uint)bobj.GetLength(0);//获取数组长度
                        Tc08a32.StartPlay(i, bobj, 0,length);//播放函数

注:

需要添加命名空间的引用:

using System.IO;
using System.Runtime.Serialization.Formatters.Binary;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值