首页
留言
友链
关于
Search
1
海康威视错误代码大全【完整版】
511 阅读
2
大华错误代码大全【完整版】
264 阅读
3
SerialPortStream 稳定易用的第三方串口通信库
242 阅读
4
iis搭建typecho个人博客
198 阅读
5
typecho中文搜索404解决办法
187 阅读
C#
随笔
SQL
软件
插件
游戏
登录
Search
标签搜索
c#
impinj
文件夹
typecho
404
.netcore
com
动态编译
语音合成
tcp
having
数据库查重
groupby
监控文件夹
操作文件夹
rsa
加密解密
加密算法
des
base64
有码挺好
累计撰写
66
篇文章
累计收到
38
条评论
首页
栏目
C#
随笔
SQL
软件
插件
游戏
页面
留言
友链
关于
搜索到
26
篇与
随笔
的结果
2021-03-17
lambda表达式拼接封装类【完整版】
简介在c#开发过程中,lambda表达式算是经常用到的东西;有时候需要动态拼接lambda表达式用于查询之类的操作,这个时候就需要相应的封装类了。此类库简单易用,唯一需要注意的是在.netcore中,如果是复杂的查询条件用And方法拼接可能会报错,如果遇到And拼接报错;可以采用AndAlso拼接,具体原因不想去深究。核心代码using System; using System.Collections.Generic; using System.Linq; using System.Linq.Expressions; using System.Threading.Tasks; namespace CiCommon.Tools { /// <summary> /// 拼接表达式树 /// </summary> public static class LambdaExtensions { public static Expression<Func<T, bool>> True<T>() { return f => true; } public static Expression<Func<T, bool>> False<T>() { return f => false; } public static Expression<T> Compose<T>(this Expression<T> first, Expression<T> second, Func<Expression, Expression, Expression> merge) { // build parameter map (from parameters of second to parameters of first) var map = first.Parameters.Select((f, i) => new { f, s = second.Parameters[i] }).ToDictionary(p => p.s, p => p.f); // replace parameters in the second lambda expression with parameters from the first var secondBody = ParameterRebinder.ReplaceParameters(map, second.Body); // apply composition of lambda expression bodies to parameters from the first expression return Expression.Lambda<T>(merge(first.Body, secondBody), first.Parameters); } public static Expression<Func<T, bool>> And<T>(this Expression<Func<T, bool>> first, Expression<Func<T, bool>> second) { return first.Compose(second, Expression.And); } public static Expression<Func<T, bool>> AndAlso<T>(this Expression<Func<T, bool>> first, Expression<Func<T, bool>> second) { return first.Compose(second, Expression.AndAlso); } public static Expression<Func<T, bool>> Or<T>(this Expression<Func<T, bool>> first, Expression<Func<T, bool>> second) { return first.Compose(second, Expression.Or); } } public class ParameterRebinder : ExpressionVisitor { private readonly Dictionary<ParameterExpression, ParameterExpression> map; public ParameterRebinder(Dictionary<ParameterExpression, ParameterExpression> map) { this.map = map ?? new Dictionary<ParameterExpression, ParameterExpression>(); } public static Expression ReplaceParameters(Dictionary<ParameterExpression, ParameterExpression> map, Expression exp) { return new ParameterRebinder(map).Visit(exp); } protected override Expression VisitParameter(ParameterExpression p) { ParameterExpression replacement; if (map.TryGetValue(p, out replacement)) { p = replacement; } return base.VisitParameter(p); } } } 调用示例Expression<Func<CommonJpFixUseless, bool>> expression = t => t.OrgId.Contains(orgid); //按需拼接表达式 if (!string.IsNullOrEmpty(orderCode)) { expression = LambdaExtensions.And(expression, t => t.OrderCode.Contains(orderCode)); } //将拼接好的表达式用于查询 var applyList = _unitOfWork.FixRepository.GetPage(expression);
2021年03月17日
16 阅读
0 评论
0 点赞
2021-03-17
中电海康固定式读写器使用示例
简介本文介绍了c#下调用中电海康固定式rfid读写器简单调用示例以及一些rfid读写器基础设置等。本示例基于中电海康读写器304编写;其他中电海康固定式读写器请自定义更改。核心代码using RFIDReaderDll; using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; namespace CetHikExample { /// <summary> /// 作者:www.cisharp.com /// 描述:此示例基于中电海康304固定式读写器编写;若其它型号的固定式读写器,请自定义更改。 /// </summary> public partial class Form1 : Form { public Form1() { InitializeComponent(); } private RFIDReaderDll.RFIDClient reader; private void btn_conn_Click(object sender, EventArgs e) { if (btn_conn.Text == "连接") { reader = new RFIDReaderDll.RFIDClient(); //网口方式连接 reader.Connect(txt_ip.Text, 7880); //串口连接 //reader.ConnectSerial("COM5",115200); reader.OnInventoryReport += Reader_OnInventoryReport; btn_conn.Text = "断开"; } else { reader?.StopPeriodInventory(); reader?.Disconnect(); btn_conn.Text = "连接"; } } private void Reader_OnInventoryReport(object sender, RFIDReaderDll.InventoryReportEventArgs e) { //与界面控件交互需要Invoke this.Invoke((Action)delegate { foreach (var item in e.Report.Tags) { ri_log.Text += item.Epc + "\r\n"; } }); } private void btn_inv_Click(object sender, EventArgs e) { if (reader.connectstate == ConnectState.Connected && btn_inv.Text == "开启盘点") { reader.StartPerioInventory(); btn_inv.Text = "停止盘点"; } else { reader.StopPeriodInventory(); btn_inv.Text = "开启盘点"; } } private void btn_cfg_Click(object sender, EventArgs e) { if (reader.connectstate == ConnectState.Connected) { SET_ALLANTENNA_PARAM ant = new SET_ALLANTENNA_PARAM() { //天线1 ant1 = new SET_ANTENNA_PARAMS() { //是否启用 bEnable = true, //驻留时长 nDwellTime = 500, //盘点周期 nInvCycle = 200, //天线功率 nPower = 25 }, //天线2 ant2 = new SET_ANTENNA_PARAMS() { bEnable = false, nDwellTime = 500, nInvCycle = 200, nPower = 25 }, //天线3 ant3 = new SET_ANTENNA_PARAMS() { bEnable = false, nDwellTime = 500, nInvCycle = 200, nPower = 25 }, //天线4 ant4 = new SET_ANTENNA_PARAMS() { bEnable = false, nDwellTime = 500, nInvCycle = 200, nPower = 25 } }; //设置天线参数 reader.SetAntenna(ref ant); MessageBox.Show("保存成功"); } } } } 示例程序隐藏内容,请前往内页查看详情
2021年03月17日
24 阅读
0 评论
0 点赞
2021-03-17
英频杰(inpinj)rfid读写器调用示例
简介本文介绍了c#下调用impinj固定式rfid读写器简单调用示例以及一些rfid读写器基础设置、GPIO设置等。本示例基于英频杰读写器(impinj)r220/420编写;其他impinj型号固定式读写器请自定义更改。首先安装SDK核心代码using Impinj.OctaneSdk; using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.IO; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; namespace ImpinjReaderExample { /// <summary> /// 作者:www.cisharp.com /// 描述:此示例基于impinj r220或420编写;若其它型号的固定式读写器,请自定义更改。 /// </summary> public partial class Form1 : Form { public Form1() { InitializeComponent(); } private Impinj.OctaneSdk.ImpinjReader reader; private void Form1_Load(object sender, EventArgs e) { } private void Reader_TagsReported(Impinj.OctaneSdk.ImpinjReader reader, Impinj.OctaneSdk.TagReport report) { //与界面控件交互需要Invoke this.Invoke((Action)delegate { foreach (var item in report.Tags) { ri_log.Text += item.Epc.ToHexString() + "\r\n"; } }); } private void btn_conn_Click(object sender, EventArgs e) { if (btn_conn.Text == "连接") { reader = new Impinj.OctaneSdk.ImpinjReader(); //连接读写器 reader.Connect(txt_ip.Text); reader.TagsReported += Reader_TagsReported; reader.ReaderStarted += Reader_ReaderStarted; reader.ReaderStopped += Reader_ReaderStopped; //如果设置文件存在,则应用设置文件 var path = System.AppDomain.CurrentDomain.SetupInformation.ApplicationBase + "settings.xml"; if (File.Exists(path)) { Settings settings = Settings.Load(path); reader.ApplySettings(settings); } btn_conn.Text = "断开"; } else { reader?.Stop(); reader?.Disconnect(); btn_conn.Text = "连接"; } } private void Reader_ReaderStopped(ImpinjReader reader, ReaderStoppedEvent e) { //盘点停止事件通知 } private void Reader_ReaderStarted(ImpinjReader reader, ReaderStartedEvent e) { //盘点开启事件通知 } private void btn_inv_Click(object sender, EventArgs e) { if (reader.IsConnected && btn_inv.Text == "开启盘点") { reader.Start(); btn_inv.Text = "停止盘点"; } else { reader.Stop(); btn_inv.Text = "开启盘点"; } } private void btn_cfg_Click(object sender, EventArgs e) { if (reader?.IsConnected ?? false) { //查询读写器已有设置。 var setting = reader.QuerySettings(); //---------------------基础设置-------------------------- //设置天线1相关参数,若有多跟天线同理。 //天线功率10至30.5之间 setting.Antennas.AntennaConfigs[0].TxPowerInDbm = 30.5; //灵敏度-30至-80之间 setting.Antennas.AntennaConfigs[0].RxSensitivityInDbm = -80; //启用禁用天线 setting.Antennas.AntennaConfigs[0].IsEnabled = true; //是否最大灵敏度 setting.Antennas.AntennaConfigs[0].MaxRxSensitivity = false; //是否最大功率 setting.Antennas.AntennaConfigs[0].MaxTxPower = false; //------------------------------------------------------- //---------------------高级设置-------------------------- ////设置GPI触发盘点以及GPO输出。 //setting.AutoStart.Mode = AutoStartMode.GpiTrigger; //setting.AutoStart.GpiPortNumber = 1; //setting.AutoStart.GpiLevel = true; ////设置延时停止,即读若干秒停止;配合GPI触发使用。 //setting.AutoStop.Mode = AutoStopMode.Duration; //setting.AutoStop.DurationInMs = 3000; ////GPI触发延时,单位毫秒 //setting.Gpis.GetGpi(1).DebounceInMs = 50; ////GPI0号接口 //setting.Gpis.GetGpi(1).PortNumber = 1; //setting.Gpis.GetGpi(1).IsEnabled = true; ////GPI触发延时,单位毫秒 //setting.Gpis.GetGpi(2).DebounceInMs = 50; //setting.Gpis.GetGpi(2).IsEnabled = true; ////GPI1号接口 //setting.Gpis.GetGpi(2).PortNumber = 2; //setting.Gpis.GetGpi(3).DebounceInMs = 50; //setting.Gpis.GetGpi(3).IsEnabled = false; //setting.Gpis.GetGpi(3).PortNumber = 3; //setting.Gpis.GetGpi(4).DebounceInMs = 50; //setting.Gpis.GetGpi(4).IsEnabled = false; //setting.Gpis.GetGpi(4).PortNumber = 4; ////------------------------------------------------------- //应用设置 reader.ApplySettings(setting); //保存设置 setting.Save(AppDomain.CurrentDomain.SetupInformation.ApplicationBase + "settings.xml"); MessageBox.Show("保存成功"); } } } } 示例程序下载隐藏内容,请前往内页查看详情
2021年03月17日
89 阅读
3 评论
1 点赞
2021-03-15
c#快捷键设置全局热键设置【简单好用】
简介C/S端程序经常需要用到快捷键呼出某些隐藏功能,在此献上最简单版的全局热键设置方法;此功能基于Win32API实现,简单方便。using System; using System.Collections.Generic; using System.Linq; using System.Runtime.InteropServices; using System.Text; using System.Threading.Tasks; namespace JmpCommon { public class HotKey { //如果函数执行成功,返回值不为0。 //如果函数执行失败,返回值为0。要得到扩展错误信息,调用GetLastError。 [DllImport("user32.dll", SetLastError = true)] public static extern bool RegisterHotKey( IntPtr hWnd, //要定义热键的窗口的句柄 int id, //定义热键ID(不能与其它ID重复) KeyModifiers fsModifiers, //标识热键是否在按Alt、Ctrl、Shift、Windows等键时才会生效 int vk //定义热键的内容 ); [DllImport("user32.dll", SetLastError = true)] public static extern bool UnregisterHotKey( IntPtr hWnd, //要取消热键的窗口的句柄 int id //要取消热键的ID ); //定义了辅助键的名称(将数字转变为字符以便于记忆,也可去除此枚举而直接使用数值) [Flags()] public enum KeyModifiers { None = 0, Alt = 1, Ctrl = 2, Shift = 4, WindowsKey = 8 } } } 快捷键注册与调用示例private void FrmMgr_Activated(object sender, EventArgs e) { //注册快捷键Ctrl+Alt+J HotKey.RegisterHotKey(this.Handle, 100, HotKey.KeyModifiers.Ctrl | HotKey.KeyModifiers.Alt, (int)Keys.J); //注册快捷键Ctrl+J HotKey.RegisterHotKey(this.Handle, 101, HotKey.KeyModifiers.Ctrl, (int)Keys.J); } private void FrmMgr_Leave(object sender, EventArgs e) { HotKey.UnregisterHotKey(this.Handle, 100); HotKey.UnregisterHotKey(this.Handle, 101); } protected override void WndProc(ref Message m) { const int WM_HOTKEY = 0x0312; //按快捷键 switch (m.Msg) { case WM_HOTKEY: switch (m.WParam.ToInt32()) { //100为自定义注册的唯一码 case 100: //在此添加响应代码,即按下快捷键后呼出的功能。 break; } break; } base.WndProc(ref m); }
2021年03月15日
25 阅读
0 评论
1 点赞
2021-03-15
c#科大讯飞离线语音合成与在线语音合成
简介在一个winform程序中需要集成语音合成的功能,再三斟酌后还是选了科大讯飞,然后就对科大讯飞的语音合成模块进行简单的封装了一下;此类包含科大讯飞在线语音合成、离线语音合成功能的简单封装,首先在科大讯飞平台选择SDK功能(需要注意的是离线语音合成在不付费的情况下仍有90天的试用时长,这点很不错)。注意:本例子使用x86的类库,所以项目编译平台应是改为x86才能正常运行。在选择完SDK能力后,下载SDK文件包;SDK包解压(1)将bin目录下的msc.dll与msc_x64.dll复制到程序运行目录下。(2)将bin>src>res>下的tts整个文件夹复制到程序运行目录下(如果有离线语音合成能力的话)using CiCommon; using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Media; using System.Reflection; using System.Runtime.InteropServices; using System.Text; using System.Threading; using System.Threading.Tasks; namespace CiCommon { /// <summary> /// 讯飞语音离线生成 /// </summary> public class XfVioceMsc { [DllImport("msc.dll", CallingConvention = CallingConvention.Winapi)] public static extern int MSPLogin(string user, string password, string configs); [DllImport("msc.dll", CallingConvention = CallingConvention.Winapi)] public static extern int MSPLogout(); [DllImport("msc.dll", CallingConvention = CallingConvention.Winapi)] public static extern IntPtr QTTSSessionBegin(string _params, ref int errorCode); [DllImport("msc.dll", CallingConvention = CallingConvention.Winapi)] public static extern int QTTSTextPut(string sessionID, string textString, uint textLen, string _params); [DllImport("msc.dll", CallingConvention = CallingConvention.Winapi)] public static extern IntPtr QTTSAudioGet(string sessionID, ref uint audioLen, ref SynthStatus synthStatus, ref int errorCode); [DllImport("msc.dll", CallingConvention = CallingConvention.Winapi)] public static extern IntPtr QTTSAudioInfo(string sessionID); [DllImport("msc.dll", CallingConvention = CallingConvention.Winapi)] public static extern int QTTSSessionEnd(string sessionID, string hints); [DllImport("msvcrt.dll", CallingConvention = CallingConvention.Cdecl)] public static extern int memcpy(IntPtr dst, IntPtr src, uint count); [DllImport("msvcrt.dll", CallingConvention = CallingConvention.Cdecl)] public static extern unsafe int memcpy(void* dst, void* src, uint count); private static int _ret = 0; private static IntPtr _sessionId; private static object syncObj = new object(); /// <summary> /// 文字转语音 /// </summary> /// <param name="text">文本</param> /// <param name="online">是否在线生成</param> public static void Text2Voice(string text, bool online = false) { try { lock (syncObj) { if (string.IsNullOrEmpty(text)) { return; } else { //校验资源文件是否存在 if (!File.Exists(System.AppDomain.CurrentDomain.SetupInformation.ApplicationBase + "msc.dll")) { //Log.WorkLog("\"msc.dll\"文件不存在", "文件丢失"); return; } //校验资源文件是否存在 if (!File.Exists(System.AppDomain.CurrentDomain.SetupInformation.ApplicationBase + "msc_x64.dll")) { //Log.WorkLog("\"msc_x64.dll\"文件不存在", "文件丢失"); return; } //校验资源文件是否存在 if (!File.Exists(System.AppDomain.CurrentDomain.SetupInformation.ApplicationBase + "tts\\common.jet")) { //Log.WorkLog("\"common.jet\"文件不存在", "文件丢失"); return; } //校验资源文件是否存在 if (!File.Exists(System.AppDomain.CurrentDomain.SetupInformation.ApplicationBase + "tts\\xiaofeng.jet")) { //Log.WorkLog("\"xiaofeng.jet\"文件不存在", "文件丢失"); return; } //校验资源文件是否存在 if (!File.Exists(System.AppDomain.CurrentDomain.SetupInformation.ApplicationBase + "tts\\xiaoyan.jet")) { //Log.WorkLog("\"xiaoyan.jet\"文件不存在", "文件丢失"); return; } ///APPID请勿随意改动 string login_configs = "appid =你的APPID ";//登录参数,自己注册后获取的appid uint audio_len = 0; SynthStatus synth_status = SynthStatus.MSP_TTS_FLAG_STILL_HAVE_DATA; _ret = MSPLogin(string.Empty, string.Empty, login_configs); if (_ret != (int)ErrorCode.MSP_SUCCESS) { //Log.WorkLog($"MSPLogin失败,错误码\"{_ret}\"", "MSPLogin"); return; } string _params = string.Empty; if (online) { _params = "ssm=1,ent=sms16k,vcn=xiaoyan,spd=medium,aue=speex-wb;7,vol=x-loud,auf=audio/L16;rate=16000"; } else { var dir = System.AppDomain.CurrentDomain.SetupInformation.ApplicationBase; _params = $"aue=speex-wb;7,auf=audio/L16,ssm=1,ent=sms16k,vol=10,engine_type = local, voice_name=xiaoyan, tts_res_path =fo|{dir}\\tts\\xiaoyan.jet;fo|{dir}\\tts\\common.jet"; } _sessionId = QTTSSessionBegin(_params, ref _ret); //QTTSSessionBegin方法返回失败 if (_ret != (int)ErrorCode.MSP_SUCCESS) { //Log.WorkLog($"QTTSSessionBegin失败,错误码\"{_ret}\"", "QTTSSessionBegin"); return; } _ret = QTTSTextPut(Ptr2Str(_sessionId), text, (uint)Encoding.Default.GetByteCount(text), string.Empty); //QTTSTextPut方法返回失败 if (_ret != (int)ErrorCode.MSP_SUCCESS) { //Log.WorkLog($"QTTSTextPut失败,错误码\"{_ret}\"", "QTTSTextPut"); return; } using (MemoryStream memoryStream = new MemoryStream()) { memoryStream.Write(new byte[44], 0, 44); var _ptr = Ptr2Str(_sessionId); var _arrList = new List<byte>(); while (true) { IntPtr _src_ptr = QTTSAudioGet(_ptr, ref audio_len, ref synth_status, ref _ret); byte[] array = new byte[audio_len]; if (audio_len > 0 && _src_ptr != IntPtr.Zero) { unsafe { fixed (byte* _dest_ptr = array) { memcpy(_dest_ptr, _src_ptr.ToPointer(), audio_len); } } _arrList.AddRange(array); } if (synth_status == SynthStatus.MSP_TTS_FLAG_DATA_END || _ret != 0) { memoryStream.Write(_arrList.ToArray(), 0, _arrList.Count); break; } } WAVE_Header wave_Header = GetWaveHeader((int)memoryStream.Length - 44); byte[] array2 = StructToBytes(wave_Header); memoryStream.Position = 0L; memoryStream.Write(array2, 0, array2.Length); memoryStream.Position = 0L; using (SoundPlayer soundPlayer = new SoundPlayer(memoryStream)) { soundPlayer.Stop(); soundPlayer.Play(); } } } } } catch (Exception ex) { //Log.ErrorLog(ex.ToString()); } finally { _ret = QTTSSessionEnd(Ptr2Str(_sessionId), ""); _ret = MSPLogout();//退出登录 } } /// <summary> /// 结构体初始化赋值 /// </summary> /// <param name="data_len"></param> /// <returns></returns> private static WAVE_Header GetWaveHeader(int data_len) { return new WAVE_Header { RIFF_ID = 1179011410, File_Size = data_len + 36, RIFF_Type = 1163280727, FMT_ID = 544501094, FMT_Size = 16, FMT_Tag = 1, FMT_Channel = 1, FMT_SamplesPerSec = 16000, AvgBytesPerSec = 32000, BlockAlign = 2, BitsPerSample = 16, DATA_ID = 1635017060, DATA_Size = data_len }; } /// <summary> /// 结构体转字符串 /// </summary> /// <param name="structure"></param> /// <returns></returns> private static byte[] StructToBytes(object structure) { int num = Marshal.SizeOf(structure); IntPtr intPtr = Marshal.AllocHGlobal(num); byte[] result; try { Marshal.StructureToPtr(structure, intPtr, false); byte[] array = new byte[num]; Marshal.Copy(intPtr, array, 0, num); result = array; } finally { Marshal.FreeHGlobal(intPtr); } return result; } /// 指针转字符串 /// </summary> /// <param name="p">指向非托管代码字符串的指针</param> /// <returns>返回指针指向的字符串</returns> private static string Ptr2Str(IntPtr p) { if (p == IntPtr.Zero) { return string.Empty; } List<byte> lb = new List<byte>(); while (Marshal.ReadByte(p) != 0) { lb.Add(Marshal.ReadByte(p)); p = p + 1; } byte[] bs = lb.ToArray(); return Encoding.Default.GetString(lb.ToArray()); } } } 公共部分枚举using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace CiCommon { public enum ErrorCode { MSP_SUCCESS = 0, MSP_ERROR_FAIL = -1, MSP_ERROR_EXCEPTION = -2, /* General errors 10100(0x2774) */ MSP_ERROR_GENERAL = 10100, /* 0x2774 */ MSP_ERROR_OUT_OF_MEMORY = 10101, /* 0x2775 */ MSP_ERROR_FILE_NOT_FOUND = 10102, /* 0x2776 */ MSP_ERROR_NOT_SUPPORT = 10103, /* 0x2777 */ MSP_ERROR_NOT_IMPLEMENT = 10104, /* 0x2778 */ MSP_ERROR_ACCESS = 10105, /* 0x2779 */ MSP_ERROR_INVALID_PARA = 10106, /* 0x277A */ MSP_ERROR_INVALID_PARA_VALUE = 10107, /* 0x277B */ MSP_ERROR_INVALID_HANDLE = 10108, /* 0x277C */ MSP_ERROR_INVALID_DATA = 10109, /* 0x277D */ MSP_ERROR_NO_LICENSE = 10110, /* 0x277E */ MSP_ERROR_NOT_INIT = 10111, /* 0x277F */ MSP_ERROR_NULL_HANDLE = 10112, /* 0x2780 */ MSP_ERROR_OVERFLOW = 10113, /* 0x2781 */ MSP_ERROR_TIME_OUT = 10114, /* 0x2782 */ MSP_ERROR_OPEN_FILE = 10115, /* 0x2783 */ MSP_ERROR_NOT_FOUND = 10116, /* 0x2784 */ MSP_ERROR_NO_ENOUGH_BUFFER = 10117, /* 0x2785 */ MSP_ERROR_NO_DATA = 10118, /* 0x2786 */ MSP_ERROR_NO_MORE_DATA = 10119, /* 0x2787 */ MSP_ERROR_SKIPPED = 10120, /* 0x2788 */ MSP_ERROR_ALREADY_EXIST = 10121, /* 0x2789 */ MSP_ERROR_LOAD_MODULE = 10122, /* 0x278A */ MSP_ERROR_BUSY = 10123, /* 0x278B */ MSP_ERROR_INVALID_CONFIG = 10124, /* 0x278C */ MSP_ERROR_VERSION_CHECK = 10125, /* 0x278D */ MSP_ERROR_CANCELED = 10126, /* 0x278E */ MSP_ERROR_INVALID_MEDIA_TYPE = 10127, /* 0x278F */ MSP_ERROR_CONFIG_INITIALIZE = 10128, /* 0x2790 */ MSP_ERROR_CREATE_HANDLE = 10129, /* 0x2791 */ MSP_ERROR_CODING_LIB_NOT_LOAD = 10130, /* 0x2792 */ /* Error codes of network 10200(0x27D8)*/ MSP_ERROR_NET_GENERAL = 10200, /* 0x27D8 */ MSP_ERROR_NET_OPENSOCK = 10201, /* 0x27D9 */ /* Open socket */ MSP_ERROR_NET_CONNECTSOCK = 10202, /* 0x27DA */ /* Connect socket */ MSP_ERROR_NET_ACCEPTSOCK = 10203, /* 0x27DB */ /* Accept socket */ MSP_ERROR_NET_SENDSOCK = 10204, /* 0x27DC */ /* Send socket data */ MSP_ERROR_NET_RECVSOCK = 10205, /* 0x27DD */ /* Recv socket data */ MSP_ERROR_NET_INVALIDSOCK = 10206, /* 0x27DE */ /* Invalid socket handle */ MSP_ERROR_NET_BADADDRESS = 10207, /* 0x27EF */ /* Bad network address */ MSP_ERROR_NET_BINDSEQUENCE = 10208, /* 0x27E0 */ /* Bind after listen/connect */ MSP_ERROR_NET_NOTOPENSOCK = 10209, /* 0x27E1 */ /* Socket is not opened */ MSP_ERROR_NET_NOTBIND = 10210, /* 0x27E2 */ /* Socket is not bind to an address */ MSP_ERROR_NET_NOTLISTEN = 10211, /* 0x27E3 */ /* Socket is not listenning */ MSP_ERROR_NET_CONNECTCLOSE = 10212, /* 0x27E4 */ /* The other side of connection is closed */ MSP_ERROR_NET_NOTDGRAMSOCK = 10213, /* 0x27E5 */ /* The socket is not datagram type */ /* Error codes of mssp message 10300(0x283C) */ MSP_ERROR_MSG_GENERAL = 10300, /* 0x283C */ MSP_ERROR_MSG_PARSE_ERROR = 10301, /* 0x283D */ MSP_ERROR_MSG_BUILD_ERROR = 10302, /* 0x283E */ MSP_ERROR_MSG_PARAM_ERROR = 10303, /* 0x283F */ MSP_ERROR_MSG_CONTENT_EMPTY = 10304, /* 0x2840 */ MSP_ERROR_MSG_INVALID_CONTENT_TYPE = 10305, /* 0x2841 */ MSP_ERROR_MSG_INVALID_CONTENT_LENGTH = 10306, /* 0x2842 */ MSP_ERROR_MSG_INVALID_CONTENT_ENCODE = 10307, /* 0x2843 */ MSP_ERROR_MSG_INVALID_KEY = 10308, /* 0x2844 */ MSP_ERROR_MSG_KEY_EMPTY = 10309, /* 0x2845 */ MSP_ERROR_MSG_SESSION_ID_EMPTY = 10310, /* 0x2846 */ MSP_ERROR_MSG_LOGIN_ID_EMPTY = 10311, /* 0x2847 */ MSP_ERROR_MSG_SYNC_ID_EMPTY = 10312, /* 0x2848 */ MSP_ERROR_MSG_APP_ID_EMPTY = 10313, /* 0x2849 */ MSP_ERROR_MSG_EXTERN_ID_EMPTY = 10314, /* 0x284A */ MSP_ERROR_MSG_INVALID_CMD = 10315, /* 0x284B */ MSP_ERROR_MSG_INVALID_SUBJECT = 10316, /* 0x284C */ MSP_ERROR_MSG_INVALID_VERSION = 10317, /* 0x284D */ MSP_ERROR_MSG_NO_CMD = 10318, /* 0x284E */ MSP_ERROR_MSG_NO_SUBJECT = 10319, /* 0x284F */ MSP_ERROR_MSG_NO_VERSION = 10320, /* 0x2850 */ MSP_ERROR_MSG_MSSP_EMPTY = 10321, /* 0x2851 */ MSP_ERROR_MSG_NEW_RESPONSE = 10322, /* 0x2852 */ MSP_ERROR_MSG_NEW_CONTENT = 10323, /* 0x2853 */ MSP_ERROR_MSG_INVALID_SESSION_ID = 10324, /* 0x2854 */ /* Error codes of DataBase 10400(0x28A0)*/ MSP_ERROR_DB_GENERAL = 10400, /* 0x28A0 */ MSP_ERROR_DB_EXCEPTION = 10401, /* 0x28A1 */ MSP_ERROR_DB_NO_RESULT = 10402, /* 0x28A2 */ MSP_ERROR_DB_INVALID_USER = 10403, /* 0x28A3 */ MSP_ERROR_DB_INVALID_PWD = 10404, /* 0x28A4 */ MSP_ERROR_DB_CONNECT = 10405, /* 0x28A5 */ MSP_ERROR_DB_INVALID_SQL = 10406, /* 0x28A6 */ MSP_ERROR_DB_INVALID_APPID = 10407, /* 0x28A7 */ /* Error codes of Resource 10500(0x2904)*/ MSP_ERROR_RES_GENERAL = 10500, /* 0x2904 */ MSP_ERROR_RES_LOAD = 10501, /* 0x2905 */ /* Load resource */ MSP_ERROR_RES_FREE = 10502, /* 0x2906 */ /* Free resource */ MSP_ERROR_RES_MISSING = 10503, /* 0x2907 */ /* Resource File Missing */ MSP_ERROR_RES_INVALID_NAME = 10504, /* 0x2908 */ /* Invalid resource file name */ MSP_ERROR_RES_INVALID_ID = 10505, /* 0x2909 */ /* Invalid resource ID */ MSP_ERROR_RES_INVALID_IMG = 10506, /* 0x290A */ /* Invalid resource image pointer */ MSP_ERROR_RES_WRITE = 10507, /* 0x290B */ /* Write read-only resource */ MSP_ERROR_RES_LEAK = 10508, /* 0x290C */ /* Resource leak out */ MSP_ERROR_RES_HEAD = 10509, /* 0x290D */ /* Resource head currupt */ MSP_ERROR_RES_DATA = 10510, /* 0x290E */ /* Resource data currupt */ MSP_ERROR_RES_SKIP = 10511, /* 0x290F */ /* Resource file skipped */ /* Error codes of TTS 10600(0x2968)*/ MSP_ERROR_TTS_GENERAL = 10600, /* 0x2968 */ MSP_ERROR_TTS_TEXTEND = 10601, /* 0x2969 */ /* Meet text end */ MSP_ERROR_TTS_TEXT_EMPTY = 10602, /* 0x296A */ /* no synth text */ /* Error codes of Recognizer 10700(0x29CC) */ MSP_ERROR_REC_GENERAL = 10700, /* 0x29CC */ MSP_ERROR_REC_INACTIVE = 10701, /* 0x29CD */ MSP_ERROR_REC_GRAMMAR_ERROR = 10702, /* 0x29CE */ MSP_ERROR_REC_NO_ACTIVE_GRAMMARS = 10703, /* 0x29CF */ MSP_ERROR_REC_DUPLICATE_GRAMMAR = 10704, /* 0x29D0 */ MSP_ERROR_REC_INVALID_MEDIA_TYPE = 10705, /* 0x29D1 */ MSP_ERROR_REC_INVALID_LANGUAGE = 10706, /* 0x29D2 */ MSP_ERROR_REC_URI_NOT_FOUND = 10707, /* 0x29D3 */ MSP_ERROR_REC_URI_TIMEOUT = 10708, /* 0x29D4 */ MSP_ERROR_REC_URI_FETCH_ERROR = 10709, /* 0x29D5 */ /* Error codes of Speech Detector 10800(0x2A30) */ MSP_ERROR_EP_GENERAL = 10800, /* 0x2A30 */ MSP_ERROR_EP_NO_SESSION_NAME = 10801, /* 0x2A31 */ MSP_ERROR_EP_INACTIVE = 10802, /* 0x2A32 */ MSP_ERROR_EP_INITIALIZED = 10803, /* 0x2A33 */ /* Error codes of TUV */ MSP_ERROR_TUV_GENERAL = 10900, /* 0x2A94 */ MSP_ERROR_TUV_GETHIDPARAM = 10901, /* 0x2A95 */ /* Get Busin Param huanid*/ MSP_ERROR_TUV_TOKEN = 10902, /* 0x2A96 */ /* Get Token */ MSP_ERROR_TUV_CFGFILE = 10903, /* 0x2A97 */ /* Open cfg file */ MSP_ERROR_TUV_RECV_CONTENT = 10904, /* 0x2A98 */ /* received content is error */ MSP_ERROR_TUV_VERFAIL = 10905, /* 0x2A99 */ /* Verify failure */ /* Error codes of IMTV */ MSP_ERROR_IMTV_SUCCESS = 11000, /* 0x2AF8 */ /* 成功 */ MSP_ERROR_IMTV_NO_LICENSE = 11001, /* 0x2AF9 */ /* 试用次数结束,用户需要付费 */ MSP_ERROR_IMTV_SESSIONID_INVALID = 11002, /* 0x2AFA */ /* SessionId失效,需要重新登录通行证 */ MSP_ERROR_IMTV_SESSIONID_ERROR = 11003, /* 0x2AFB */ /* SessionId为空,或者非法 */ MSP_ERROR_IMTV_UNLOGIN = 11004, /* 0x2AFC */ /* 未登录通行证 */ MSP_ERROR_IMTV_SYSTEM_ERROR = 11005, /* 0x2AFD */ /* 系统错误 */ /* Error codes of HCR */ MSP_ERROR_HCR_GENERAL = 11100, MSP_ERROR_HCR_RESOURCE_NOT_EXIST = 11101, /* Error codes of http 12000(0x2EE0) */ MSP_ERROR_HTTP_BASE = 12000, /* 0x2EE0 */ /*Error codes of ISV */ MSP_ERROR_ISV_NO_USER = 13000, /* 32C8 */ /* the user doesn't exist */ } /// <summary> /// vol参数的枚举常量 /// </summary> public enum EnuVol { x_soft, soft, medium, loud, x_loud } /// <summary> /// speed语速参数的枚举常量 /// </summary> public enum EnuSpeed { x_slow, slow, medium, fast, x_fast } /// <summary> /// speeker朗读者枚举常量 /// </summary> public enum EnuSpeeker { 小燕_青年女声_中英文_普通话 = 0, 小宇_青年男声_中英文_普通话, 凯瑟琳_青年女声_英语, 亨利_青年男声_英语, 玛丽_青年女声_英语, 小研_青年女声_中英文_普通话, 小琪_青年女声_中英文_普通话, 小峰_青年男声_中英文_普通话, 小梅_青年女声_中英文_粤语, 小莉_青年女声_中英文_台普, 小蓉_青年女声_汉语_四川话, 小芸_青年女声_汉语_东北话, 小坤_青年男声_汉语_河南话, 小强_青年男声_汉语_湖南话, 小莹_青年女声_汉语_陕西话, 小新_童年男声_汉语_普通话, 楠楠_童年女声_汉语_普通话, 老孙_老年男声_汉语_普通话 } public enum SynthStatus { MSP_TTS_FLAG_STILL_HAVE_DATA = 1, MSP_TTS_FLAG_DATA_END = 2, MSP_TTS_FLAG_CMD_CANCELED = 0 } } 公共部分枚举using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace CiCommon { public enum ErrorCode { MSP_SUCCESS = 0, MSP_ERROR_FAIL = -1, MSP_ERROR_EXCEPTION = -2, /* General errors 10100(0x2774) */ MSP_ERROR_GENERAL = 10100, /* 0x2774 */ MSP_ERROR_OUT_OF_MEMORY = 10101, /* 0x2775 */ MSP_ERROR_FILE_NOT_FOUND = 10102, /* 0x2776 */ MSP_ERROR_NOT_SUPPORT = 10103, /* 0x2777 */ MSP_ERROR_NOT_IMPLEMENT = 10104, /* 0x2778 */ MSP_ERROR_ACCESS = 10105, /* 0x2779 */ MSP_ERROR_INVALID_PARA = 10106, /* 0x277A */ MSP_ERROR_INVALID_PARA_VALUE = 10107, /* 0x277B */ MSP_ERROR_INVALID_HANDLE = 10108, /* 0x277C */ MSP_ERROR_INVALID_DATA = 10109, /* 0x277D */ MSP_ERROR_NO_LICENSE = 10110, /* 0x277E */ MSP_ERROR_NOT_INIT = 10111, /* 0x277F */ MSP_ERROR_NULL_HANDLE = 10112, /* 0x2780 */ MSP_ERROR_OVERFLOW = 10113, /* 0x2781 */ MSP_ERROR_TIME_OUT = 10114, /* 0x2782 */ MSP_ERROR_OPEN_FILE = 10115, /* 0x2783 */ MSP_ERROR_NOT_FOUND = 10116, /* 0x2784 */ MSP_ERROR_NO_ENOUGH_BUFFER = 10117, /* 0x2785 */ MSP_ERROR_NO_DATA = 10118, /* 0x2786 */ MSP_ERROR_NO_MORE_DATA = 10119, /* 0x2787 */ MSP_ERROR_SKIPPED = 10120, /* 0x2788 */ MSP_ERROR_ALREADY_EXIST = 10121, /* 0x2789 */ MSP_ERROR_LOAD_MODULE = 10122, /* 0x278A */ MSP_ERROR_BUSY = 10123, /* 0x278B */ MSP_ERROR_INVALID_CONFIG = 10124, /* 0x278C */ MSP_ERROR_VERSION_CHECK = 10125, /* 0x278D */ MSP_ERROR_CANCELED = 10126, /* 0x278E */ MSP_ERROR_INVALID_MEDIA_TYPE = 10127, /* 0x278F */ MSP_ERROR_CONFIG_INITIALIZE = 10128, /* 0x2790 */ MSP_ERROR_CREATE_HANDLE = 10129, /* 0x2791 */ MSP_ERROR_CODING_LIB_NOT_LOAD = 10130, /* 0x2792 */ /* Error codes of network 10200(0x27D8)*/ MSP_ERROR_NET_GENERAL = 10200, /* 0x27D8 */ MSP_ERROR_NET_OPENSOCK = 10201, /* 0x27D9 */ /* Open socket */ MSP_ERROR_NET_CONNECTSOCK = 10202, /* 0x27DA */ /* Connect socket */ MSP_ERROR_NET_ACCEPTSOCK = 10203, /* 0x27DB */ /* Accept socket */ MSP_ERROR_NET_SENDSOCK = 10204, /* 0x27DC */ /* Send socket data */ MSP_ERROR_NET_RECVSOCK = 10205, /* 0x27DD */ /* Recv socket data */ MSP_ERROR_NET_INVALIDSOCK = 10206, /* 0x27DE */ /* Invalid socket handle */ MSP_ERROR_NET_BADADDRESS = 10207, /* 0x27EF */ /* Bad network address */ MSP_ERROR_NET_BINDSEQUENCE = 10208, /* 0x27E0 */ /* Bind after listen/connect */ MSP_ERROR_NET_NOTOPENSOCK = 10209, /* 0x27E1 */ /* Socket is not opened */ MSP_ERROR_NET_NOTBIND = 10210, /* 0x27E2 */ /* Socket is not bind to an address */ MSP_ERROR_NET_NOTLISTEN = 10211, /* 0x27E3 */ /* Socket is not listenning */ MSP_ERROR_NET_CONNECTCLOSE = 10212, /* 0x27E4 */ /* The other side of connection is closed */ MSP_ERROR_NET_NOTDGRAMSOCK = 10213, /* 0x27E5 */ /* The socket is not datagram type */ /* Error codes of mssp message 10300(0x283C) */ MSP_ERROR_MSG_GENERAL = 10300, /* 0x283C */ MSP_ERROR_MSG_PARSE_ERROR = 10301, /* 0x283D */ MSP_ERROR_MSG_BUILD_ERROR = 10302, /* 0x283E */ MSP_ERROR_MSG_PARAM_ERROR = 10303, /* 0x283F */ MSP_ERROR_MSG_CONTENT_EMPTY = 10304, /* 0x2840 */ MSP_ERROR_MSG_INVALID_CONTENT_TYPE = 10305, /* 0x2841 */ MSP_ERROR_MSG_INVALID_CONTENT_LENGTH = 10306, /* 0x2842 */ MSP_ERROR_MSG_INVALID_CONTENT_ENCODE = 10307, /* 0x2843 */ MSP_ERROR_MSG_INVALID_KEY = 10308, /* 0x2844 */ MSP_ERROR_MSG_KEY_EMPTY = 10309, /* 0x2845 */ MSP_ERROR_MSG_SESSION_ID_EMPTY = 10310, /* 0x2846 */ MSP_ERROR_MSG_LOGIN_ID_EMPTY = 10311, /* 0x2847 */ MSP_ERROR_MSG_SYNC_ID_EMPTY = 10312, /* 0x2848 */ MSP_ERROR_MSG_APP_ID_EMPTY = 10313, /* 0x2849 */ MSP_ERROR_MSG_EXTERN_ID_EMPTY = 10314, /* 0x284A */ MSP_ERROR_MSG_INVALID_CMD = 10315, /* 0x284B */ MSP_ERROR_MSG_INVALID_SUBJECT = 10316, /* 0x284C */ MSP_ERROR_MSG_INVALID_VERSION = 10317, /* 0x284D */ MSP_ERROR_MSG_NO_CMD = 10318, /* 0x284E */ MSP_ERROR_MSG_NO_SUBJECT = 10319, /* 0x284F */ MSP_ERROR_MSG_NO_VERSION = 10320, /* 0x2850 */ MSP_ERROR_MSG_MSSP_EMPTY = 10321, /* 0x2851 */ MSP_ERROR_MSG_NEW_RESPONSE = 10322, /* 0x2852 */ MSP_ERROR_MSG_NEW_CONTENT = 10323, /* 0x2853 */ MSP_ERROR_MSG_INVALID_SESSION_ID = 10324, /* 0x2854 */ /* Error codes of DataBase 10400(0x28A0)*/ MSP_ERROR_DB_GENERAL = 10400, /* 0x28A0 */ MSP_ERROR_DB_EXCEPTION = 10401, /* 0x28A1 */ MSP_ERROR_DB_NO_RESULT = 10402, /* 0x28A2 */ MSP_ERROR_DB_INVALID_USER = 10403, /* 0x28A3 */ MSP_ERROR_DB_INVALID_PWD = 10404, /* 0x28A4 */ MSP_ERROR_DB_CONNECT = 10405, /* 0x28A5 */ MSP_ERROR_DB_INVALID_SQL = 10406, /* 0x28A6 */ MSP_ERROR_DB_INVALID_APPID = 10407, /* 0x28A7 */ /* Error codes of Resource 10500(0x2904)*/ MSP_ERROR_RES_GENERAL = 10500, /* 0x2904 */ MSP_ERROR_RES_LOAD = 10501, /* 0x2905 */ /* Load resource */ MSP_ERROR_RES_FREE = 10502, /* 0x2906 */ /* Free resource */ MSP_ERROR_RES_MISSING = 10503, /* 0x2907 */ /* Resource File Missing */ MSP_ERROR_RES_INVALID_NAME = 10504, /* 0x2908 */ /* Invalid resource file name */ MSP_ERROR_RES_INVALID_ID = 10505, /* 0x2909 */ /* Invalid resource ID */ MSP_ERROR_RES_INVALID_IMG = 10506, /* 0x290A */ /* Invalid resource image pointer */ MSP_ERROR_RES_WRITE = 10507, /* 0x290B */ /* Write read-only resource */ MSP_ERROR_RES_LEAK = 10508, /* 0x290C */ /* Resource leak out */ MSP_ERROR_RES_HEAD = 10509, /* 0x290D */ /* Resource head currupt */ MSP_ERROR_RES_DATA = 10510, /* 0x290E */ /* Resource data currupt */ MSP_ERROR_RES_SKIP = 10511, /* 0x290F */ /* Resource file skipped */ /* Error codes of TTS 10600(0x2968)*/ MSP_ERROR_TTS_GENERAL = 10600, /* 0x2968 */ MSP_ERROR_TTS_TEXTEND = 10601, /* 0x2969 */ /* Meet text end */ MSP_ERROR_TTS_TEXT_EMPTY = 10602, /* 0x296A */ /* no synth text */ /* Error codes of Recognizer 10700(0x29CC) */ MSP_ERROR_REC_GENERAL = 10700, /* 0x29CC */ MSP_ERROR_REC_INACTIVE = 10701, /* 0x29CD */ MSP_ERROR_REC_GRAMMAR_ERROR = 10702, /* 0x29CE */ MSP_ERROR_REC_NO_ACTIVE_GRAMMARS = 10703, /* 0x29CF */ MSP_ERROR_REC_DUPLICATE_GRAMMAR = 10704, /* 0x29D0 */ MSP_ERROR_REC_INVALID_MEDIA_TYPE = 10705, /* 0x29D1 */ MSP_ERROR_REC_INVALID_LANGUAGE = 10706, /* 0x29D2 */ MSP_ERROR_REC_URI_NOT_FOUND = 10707, /* 0x29D3 */ MSP_ERROR_REC_URI_TIMEOUT = 10708, /* 0x29D4 */ MSP_ERROR_REC_URI_FETCH_ERROR = 10709, /* 0x29D5 */ /* Error codes of Speech Detector 10800(0x2A30) */ MSP_ERROR_EP_GENERAL = 10800, /* 0x2A30 */ MSP_ERROR_EP_NO_SESSION_NAME = 10801, /* 0x2A31 */ MSP_ERROR_EP_INACTIVE = 10802, /* 0x2A32 */ MSP_ERROR_EP_INITIALIZED = 10803, /* 0x2A33 */ /* Error codes of TUV */ MSP_ERROR_TUV_GENERAL = 10900, /* 0x2A94 */ MSP_ERROR_TUV_GETHIDPARAM = 10901, /* 0x2A95 */ /* Get Busin Param huanid*/ MSP_ERROR_TUV_TOKEN = 10902, /* 0x2A96 */ /* Get Token */ MSP_ERROR_TUV_CFGFILE = 10903, /* 0x2A97 */ /* Open cfg file */ MSP_ERROR_TUV_RECV_CONTENT = 10904, /* 0x2A98 */ /* received content is error */ MSP_ERROR_TUV_VERFAIL = 10905, /* 0x2A99 */ /* Verify failure */ /* Error codes of IMTV */ MSP_ERROR_IMTV_SUCCESS = 11000, /* 0x2AF8 */ /* 成功 */ MSP_ERROR_IMTV_NO_LICENSE = 11001, /* 0x2AF9 */ /* 试用次数结束,用户需要付费 */ MSP_ERROR_IMTV_SESSIONID_INVALID = 11002, /* 0x2AFA */ /* SessionId失效,需要重新登录通行证 */ MSP_ERROR_IMTV_SESSIONID_ERROR = 11003, /* 0x2AFB */ /* SessionId为空,或者非法 */ MSP_ERROR_IMTV_UNLOGIN = 11004, /* 0x2AFC */ /* 未登录通行证 */ MSP_ERROR_IMTV_SYSTEM_ERROR = 11005, /* 0x2AFD */ /* 系统错误 */ /* Error codes of HCR */ MSP_ERROR_HCR_GENERAL = 11100, MSP_ERROR_HCR_RESOURCE_NOT_EXIST = 11101, /* Error codes of http 12000(0x2EE0) */ MSP_ERROR_HTTP_BASE = 12000, /* 0x2EE0 */ /*Error codes of ISV */ MSP_ERROR_ISV_NO_USER = 13000, /* 32C8 */ /* the user doesn't exist */ } /// <summary> /// vol参数的枚举常量 /// </summary> public enum EnuVol { x_soft, soft, medium, loud, x_loud } /// <summary> /// speed语速参数的枚举常量 /// </summary> public enum EnuSpeed { x_slow, slow, medium, fast, x_fast } /// <summary> /// speeker朗读者枚举常量 /// </summary> public enum EnuSpeeker { 小燕_青年女声_中英文_普通话 = 0, 小宇_青年男声_中英文_普通话, 凯瑟琳_青年女声_英语, 亨利_青年男声_英语, 玛丽_青年女声_英语, 小研_青年女声_中英文_普通话, 小琪_青年女声_中英文_普通话, 小峰_青年男声_中英文_普通话, 小梅_青年女声_中英文_粤语, 小莉_青年女声_中英文_台普, 小蓉_青年女声_汉语_四川话, 小芸_青年女声_汉语_东北话, 小坤_青年男声_汉语_河南话, 小强_青年男声_汉语_湖南话, 小莹_青年女声_汉语_陕西话, 小新_童年男声_汉语_普通话, 楠楠_童年女声_汉语_普通话, 老孙_老年男声_汉语_普通话 } public enum SynthStatus { MSP_TTS_FLAG_STILL_HAVE_DATA = 1, MSP_TTS_FLAG_DATA_END = 2, MSP_TTS_FLAG_CMD_CANCELED = 0 } }
2021年03月15日
40 阅读
0 评论
0 点赞
1
2
...
6