SEO技术

SEO技术

Products

当前位置:首页 > SEO技术 >

如何有效防范WordPress网站源码被窃取,防止微信域名被封禁?

96SEO 2026-02-19 19:00 0


一、前言

在开发中#xff0c;会遇到将文字转语音输出的需求#xff0…

如何有效防范WordPress网站源码被窃取,防止微信域名被封禁?

推荐阅读

CSDN主页GitHub开源地址Unity3D插件分享简书地址我的个人博客

大家好我是佛系工程师☆恬静的小魔龙☆不定时更新Unity开发技巧觉得有用记得一键三连哦。

一、前言

在开发中会遇到将文字转语音输出的需求一般是通过在网上找免费的工具去实现。

Read

这些有些差强人意配音的质量有点问题而且还容易崩溃就想着用Unity去实现一个文字转语音的工具。

本篇文章使用科大讯飞的SDK去实现文字转语音的功能会从如何申请科大讯飞的应用如何下载SDK如何配置环境如何搭建Unity程序一步一步实现最后也会将工程上传GitCode欢迎大家批评指正。

先看一下效果图

1打开讯飞开发平台https://www.xfyun.cn/登录注册一下

2注册完进入控制台https://console.xfyun.cn/app/myapp点击创建新应用

3填入名称、分类、描述

3平台选择Windows如果想要用手机搞可以选择Android然后AI能力选择离线语音合成普通版和在线语音合成流式版

2-3、配置环境

这里的配置环境不是配置电脑上的环境而是配置Unity项目的环境需要将上一步下载的sdk导入到Unity中。

1新建项目名字随意版本随意

2将下载的文件解压缩找到msc.dll和msc_x64.dll

还有一个NAudio.dll是一个字节数组转AudioClip音频的动态链接库下载链接https://download.csdn.net/download/q764424567/88167687

1、封装MSCDLL类主调用函数登录、语音识别、语音合成都在这里面

MSCDLL类

System.Runtime.InteropServices;

using

UnityEngine.Windows.WebCam.VideoCapture;public

class

使用其他接口前必须先调用MSPLogin,可以在应用程序启动时调用///

/summary///

每个参数和参数值通过keyvalue的形式组成参数对,如果有多个参数对,再用逗号进行拼接/param///

appid

fo|[path]|[offset]|[length]|xx|xx

///

ivw_res_pathfo|res/ivw/wakeupresource.jet///

多个资源路径示例:

asr_res_pathfo|res/asr/common.jet;fo|res/asr/sms.jet///

returnsreturn

成功返回MSP_SUCCESS,否则返回错误代码/returns[DllImport(msc_x64,

CallingConvention

CallingConvention.StdCall)]public

static

确保其他接口调用结束之后调用MSPLogout,否则结果不可预期///

/summary///

returns如果函数调用成功返回MSP_SUCCESS,否则返回错误代码

return

code./returns[DllImport(msc_x64,

CallingConvention

CallingConvention.StdCall)]public

static

command./returns[DllImport(msc_x64,

CallingConvention

CallingConvention.StdCall)]public

static

code./returns[DllImport(msc_x64,

CallingConvention

CallingConvention.StdCall)]public

static

exsit./returns[DllImport(msc_x64,

CallingConvention

CallingConvention.StdCall)]public

static

函数调用成功则其值为MSP_SUCCESS,否则返回错误代码/returns[DllImport(msc_x64,

CallingConvention

CallingConvention.StdCall)]public

static

函数调用成功返回MSP_SUCCESS,否则返回错误代码/returns[DllImport(msc_x64,

CallingConvention

CallingConvention.StdCall)]public

static

如果函数调用成功返回MSP_SUCCESS,否则返回错误代码/param///

returnsreturn

成功返回缓冲区指针,失败或数据不存在返回NULL/returns[DllImport(msc_x64,

CallingConvention

CallingConvention.StdCall)]public

static

离线语法识别结果门限值,设置只返回置信度得分大于此门限值的结果

0-100///

函数调用成功则其值为MSP_SUCCESS,否则返回错误代码/param///

returnsreturn

函数调用成功返回字符串格式的sessionID,失败返回NULL

sessionID是本次识别的句柄/returns[DllImport(msc_x64,

CallingConvention

CallingConvention.StdCall)]public

static

由QISRSessionBegin返回的句柄/param///

param

识别器返回的状态,提醒用户及时开始\停止获取识别结果/param///

本接口需不断调用,直到音频全部写入为止

当写入首块音频时,将audioStatus置为MSP_AUDIO_SAMPLE_FIRST///

当写入最后一块音频时,将audioStatus置为MSP_AUDIO_SAMPLE_LAST///

其余情况下,将audioStatus置为MSP_AUDIO_SAMPLE_CONTINUE///

同时,需定时检查两个变量:

当epStatus显示已检测到后端点时,MSC已不再接收音频,应及时停止音频写入///

当rsltStatus显示有识别结果返回时,即可从MSC缓存中获取结果///

returnsreturn

函数调用成功则其值为MSP_SUCCESS,否则返回错误代码/returns[DllImport(msc_x64,

CallingConvention

CallingConvention.StdCall)]public

static

由QISRSessionBegin返回的句柄/param///

param

识别结果的状态,其取值范围和含义请参考QISRAudioWrite

param

函数调用成功则其值为MSP_SUCCESS,否则返回错误代码/param///

在音频写入完毕后,用户需反复调用此接口,直到识别结果获取完毕(rlstStatus值为5)或返回错误码

///

注意:如果某次成功调用后暂未获得识别结果,请将当前线程sleep一段时间,以防频繁调用浪费CPU资源///

returnsreturn

其他情况(失败或无结果)返回NULL/returns[DllImport(msc_x64,

CallingConvention

CallingConvention.StdCall)]public

static

本接口和QISRSessionBegin对应,调用此接口后,该句柄对应的相关资源(参数、语法、音频、实例等)都会被释放,用户不应再使用该句柄///

/summary///

由QISRSessionBegin返回的句柄/param///

param

结束本次语音识别的原因描述,为用户自定义内容/param///

returnsreturn

函数调用成功则其值为MSP_SUCCESS,否则返回错误代码/returns[DllImport(msc_x64,

CallingConvention

CallingConvention.StdCall)]public

static

由QISRSessionbegin返回的句柄,如果为NULL,获取msc的设置信息/param///

param

函数调用成功返回MSP_SUCCESS,否则返回错误代码/returns[DllImport(msc_x64,

CallingConvention

CallingConvention.StdCall)]public

static

合成文本编码格式,支持参数,GB2312,GBK,BIG5,UNICODE,GB18030,UTF8///

sample_rate

合成音频采样率,支持参数,16000,8000,默认为16000///

background_sound背景音

函数调用成功则其值为MSP_SUCCESS,否则返回错误代码/param///

returnsreturn

函数调用成功返回字符串格式的sessionID,失败返回NULL

sessionID是本次合成的句柄/returns[DllImport(msc_x64,

CallingConvention

CallingConvention.StdCall)]public

static

由QTTSSessionBegin返回的句柄/param///

param

函数调用成功则其值为MSP_SUCCESS,否则返回错误代码/returns[DllImport(msc_x64,

CallingConvention

CallingConvention.StdCall)]public

static

由QTTSSessionBegin返回的句柄/param///

param

函数调用成功则其值为MSP_SUCCESS,否则返回错误代码/param///

在重复获取音频时,如果暂未获得音频数据,需要将当前线程sleep一段时间,以防频繁调用浪费CPU资源///

returnsreturn

调用失败或无音频数据时,返回NULL/returns[DllImport(msc_x64,

CallingConvention

CallingConvention.StdCall)]public

static

string./returns[DllImport(msc_x64,

CallingConvention

CallingConvention.StdCall)]public

static

本接口和QTTSSessionBegin对应,调用此接口后,该句柄对应的相关资源(参数

合成文本

由QTTSSessionBegin返回的句柄/param///

param

结束本次语音合成的原因描述,为用户自定义内容/param///

returnsreturn

函数调用成功则其值为MSP_SUCCESS,否则返回错误代码/returns[DllImport(msc_x64,

CallingConvention

CallingConvention.StdCall)]public

static

errcode./returns[DllImport(msc_x64,

CallingConvention

CallingConvention.StdCall)]public

static

获取当前语音合成信息,如当前合成音频对应文本结束位置、上行流量、下行流量等///

/summary///

由QTTSSessionBegin返回的句柄,如果为NULL,获取msc的设置信息/param///

param

函数调用成功则其值为MSP_SUCCESS,否则返回错误代码/returns[DllImport(msc_x64,

CallingConvention

CallingConvention.StdCall)]public

static

[SDK]可能是应用没有权限访问某项服务,需要检查应用是否通过审核或参数是否合法、完整,检查相应文件是否具有读写权限

*/MSP_ERROR_ACCESS

3.图像文字识别报错可能是参数不在要求的范围内或者图片格式不符合要求。

*

4.参数都看似正确的话,检查参数前是否有空格*/MSP_ERROR_INVALID_PARA_VALUE

10107,

某两个接口调用的时间间隔过长比如:调sessionbegin接口之后,过了很长时间才调了writeaudio接口*

解决方案:*

2.评测业务:用户传送的文本长度大于规定字节中文限制在180字节,英文限制在300字节导致*

1.0

gb2312;开头,目前只支持这两种格式的abnf语法上传。

*

解决方案:*

1.查看编码是否符合需求,一定要是utf-8编码,查看内部语法编写是否符合需求*

3.压缩音频或图片,不要超过上限可查阅文档确认上限*/MSP_ERROR_INVALID_DATA

10109,

已经调用MSPLogin接口,检查是否调用MSPLogout登出,如果是的话需要重新调用MSPLogin接口

*/MSP_ERROR_NOT_INIT

可能与当前网络质量有关,可以换个网络再测试一下,查看网络环境是否正常,查看是否使用的网络对请求域名或者端口有限制

*/MSP_ERROR_TIME_OUT

一般是合成出现该问题,查看是否每次合成字数超出上线,每次合成的字数太多或在线8192字节要限制在60s*

解决方案:*

SDK仅支持:采样率16k或者8k,采样精度16bit,单声道pcm或者wav格式的音频

10119,

*/MSP_ERROR_CODING_LIB_NOT_LOAD

10130,

*/MSP_ERROR_MESSAGE_NOT_COMPLETE

10133,

10200(0x27D8)*/MSP_ERROR_NET_GENERAL

10200,

error*/MSP_ERROR_NFL_INNER_ERROR

10216,

10220,MSP_ERROR_NET_SSL_HANDSHAKE

10221,MSP_ERROR_NET_INVALID_ROOT_CERT

10222,MSP_ERROR_NET_INVALID_CLIENT_CERT

10223,MSP_ERROR_NET_INVALID_SERVER_CERT

10224,MSP_ERROR_NET_INVALID_KEY

10225,MSP_ERROR_NET_CERT_VERIFY_FAILED

10228,/*

*/MSP_ERROR_MSG_INVALID_CONTENT_TYPE

10305,

*/MSP_ERROR_MSG_INVALID_CONTENT_LENGTH

10306,

*/MSP_ERROR_MSG_INVALID_CONTENT_ENCODE

10307,

*/MSP_ERROR_MSG_SESSION_ID_EMPTY

10310,

*/MSP_ERROR_MSG_EXTERN_ID_EMPTY

10314,

*/MSP_ERROR_MSG_INVALID_SUBJECT

10316,

*/MSP_ERROR_MSG_INVALID_VERSION

10317,

*/MSP_ERROR_MSG_INVALID_SESSION_ID

10324,

*/MSP_ERROR_MSG_INVALID_CONTENT

10325,

10400(0x28A0)*/MSP_ERROR_DB_GENERAL

10400,

10500(0x2904)*/MSP_ERROR_RES_GENERAL

10500,

10600(0x2968)*/MSP_ERROR_TTS_GENERAL

10600,

*/MSP_ERROR_REC_NO_ACTIVE_GRAMMARS

10703,

*/MSP_ERROR_REC_DUPLICATE_GRAMMAR

10704,

*/MSP_ERROR_REC_INVALID_MEDIA_TYPE

10705,

*/MSP_ERROR_REC_INVALID_LANGUAGE

10706,

*/MSP_ERROR_REC_URI_FETCH_ERROR

10709,

*/MSP_ERROR_LOGIN_SESSIONID_INVALID

11002,

*/MSP_ERROR_LOGIN_SESSIONID_ERROR

11003,

11100,MSP_ERROR_HCR_RESOURCE_NOT_EXIST

11104,MSP_ERROR_HCR_APPEND_STROKES

11106,MSP_ERROR_HCR_POINT_DECODE

11110,/*

*/MSP_ERROR_AUTH_NO_ENOUGH_LICENSE

11201,

*/MSP_ERROR_AUTH_INVALID_LICENSE

11202,

*/MSP_ERROR_AUTH_LICENSE_EXPIRED

11203,

*/MSP_ERROR_AUTH_NEED_MORE_DATA

11204,

*/MSP_ERROR_AUTH_LICENSE_TO_BE_EXPIRED

11205,

*/MSP_ERROR_AUTH_INVALID_MACHINE_ID

11206,

*/MSP_ERROR_AUTH_LOCAL_ASR_FORBIDDEN

11207,

*/MSP_ERROR_AUTH_LOCAL_TTS_FORBIDDEN

11208,

*/MSP_ERROR_AUTH_LOCAL_IVW_FORBIDDEN

11209,

*/MSP_ERROR_AUTH_APPID_NOT_MATCH

11210,

11213MSP_ERROR_AUTH_LOCAL_IFD_FORBIDDEN

11213,

Authorization*/MSP_ERROR_AUTH_DVC_NO_LICENSE

11300,MSP_ERROR_AUTH_DVC_NO_ENOUGH_LICENSE

11301,MSP_ERROR_AUTH_DVC_INVALID_LICENSE

11302,MSP_ERROR_AUTH_DVC_LICENSE_EXPIRED

11303,MSP_ERROR_AUTH_DVC_NEED_MORE_DATA

11304,MSP_ERROR_AUTH_DVC_LICENSE_TO_BE_EXPIRED

11305,MSP_ERROR_AUTH_DVC_EXCEED_LICENSE

11401/*

11402-11403MSP_ERROR_ASE_EXCEP_SNRATIO

11402,MSP_ERROR_ASE_EXCEP_PAPERDATA

11404/*

*/MSP_ERROR_ASE_EXCEP_PAPERCONTENTS

11405-11406MSP_ERROR_ASE_EXCEP_NOTMONO

11405,MSP_ERROR_ASE_EXCEP_OTHERS

11407/*

存在未登录词,比如:80-year-old中带有-,引擎会认为是减号*

解决方案:*

*/MSP_ERROR_ASE_EXCEP_ULISTWORD

11500,MSP_ERROR_IOT_PARAM_ERROR

11501,

errorMSP_ERROR_IOT_INVALID_SERVICE

11502,

ProTranServerMSP_ERROR_IOT_INVALID_PRODUCTID

11503,

ProTranServerMSP_EEROR_IOT_INVALID_ATTR

11504,

ProTranServerMSP_ERROR_IOT_INVALID_PLATFORM

11505,

ProTranServerMSP_ERROR_IOT_DID_NOT_FOUND

11506,

注册有效次数rgn范围为2-9次,包括出错次数,最多不超过9次

*/MSP_ERROR_IVP_EXTRA_RGN_SOPPORT

11602/*

因信号波形的幅度太大,而超出系统的线性范围,如记录尖叫声的音频*

解决方案:*

更换注册或验证音频,声音太大,音量减小一点,或者说话远离手机一点

11603/*

更换注册或验证音频,音量太小,音量增大一点,或者说话靠近手机一点

11604,

更换注册或验证音频,音频缺失开头和结尾,录音开始后再说话,录音完停顿一秒再结束,保证开头结尾有一定的静音

11605,

更换注册或验证音频,音频太短不足以提取有效音频特征,录音时候要接近正常语速,不要读太快

*/MSP_ERROR_IVP_UTTER_TOO_SHORT

11607/*

更换音频或者修改密码文本,录音文本和录音不一致,可能是真的读错了,也可能能是读对了,但是发音不标准,有颤音,方言等,尽量读标准普通话,发音清晰

11608/*

音频不够,注册自由说,而写入的音频又不够长时会报,告诉调用者继续传音频*

报错原因:*

音频不够,注册自由说,而写入的音频又不够长时会报,告诉调用者继续传音频*

解决方案:*

更换注册或验证音频,针对自由说,有效音频要超过20秒,录音时间一般不少于30秒

*/MSP_ERROR_IVP_NO_ENOUGH_AUDIO

11610MSP_ERROR_IVP_MODEL_NOT_FOUND_IN_HBASE

11610,

【人脸向左,对应的引擎错误码是20201】MSP_ERROR_FACE_IMAGE_FULL_RIGHT

11702,

【人脸向右,对应的引擎错误码是20202】MSP_ERROR_IMAGE_CLOCKWISE_WHIRL

11703,

【顺时针旋转,对应的引擎错误码是20203】MSP_ERROR_IMAGE_COUNTET_CLOCKWISE_WHIRL

11704,

【逆时针旋转,对应的引擎错误码是20204】MSP_ERROR_VALID_IMAGE_SIZE

11705,

,对应的引擎错误码是20205】MSP_ERROR_ILLUMINATION

11706,

【光照异常,对应的引擎错误码是20206】MSP_ERROR_FACE_OCCULTATION

11707,

【人脸被遮挡,对应的引擎错误码是20207】MSP_ERROR_FACE_INVALID_MODEL

11708,

【非法模型数据,对应的引擎错误码是20208】MSP_ERROR_FUSION_INVALID_INPUT_TYPE

11709,

【输入数据类型非法,对应的引擎错误码是20300】MSP_ERROR_FUSION_NO_ENOUGH_DATA

11710,

【输入的数据不完整,对应的引擎错误码是20301】MSP_ERROR_FUSION_ENOUGH_DATA

11711,

【输入的数据过多,对应的引擎错误码是20302】/*Error

Codes

AIUI*/MSP_ERROR_AIUI_CID_EXPIRED

11800,/*

*/MSP_ERROR_MMP_NETDSS_INITFAIL

15003,

*/MSP_ERROR_MMP_MAIL_SESSION_FAIL

15006,

邮件登陆服务器时,会话错误。

*/MSP_ERROR_MMP_MAIL_LOGON_FAIL

15007,

邮件登陆服务器时,拒绝登陆。

*/MSP_ERROR_MMP_MAIL_USER_ILLEGAL

15008,

邮件登陆服务器时,用户名非法。

*/MSP_ERROR_MMP_MAIL_PWD_ERR

15009,

邮件登陆服务器时,密码错误。

*/MSP_ERROR_MMP_MAIL_SOCKET_ERR

15010,

邮件发送过程中套接字错误*/MSP_ERROR_MMP_MAIL_INIT_FAIL

15011,

邮件初始化错误*/MSP_ERROR_MMP_STORE_MNR_NO_INIT

15012,

store_manager未初始化,或初始化失败*/MSP_ERROR_MMP_STORE_MNR_POOL_FULL

15013,

store_manager的连接池满了*/MSP_ERROR_MMP_STRATGY_PARAM_ILLEGAL

15014,

报警策略表达式非法*/MSP_ERROR_MMP_STRATGY_PARAM_TOOLOOG

15015,

报警策略表达式太长*/MSP_ERROR_MMP_PARAM_NULL

15016,

函数参数为空*/MSP_ERROR_MMP_ERR_MORE_TOTAL

15017,

总次数。

*/MSP_ERROR_MMP_PROC_THRESHOLD

15018,

进程监控阀值设置错误*/MSP_ERROR_MMP_SERVER_THRESHOLD

15019,

服务器监控阀值设置错误*/MSP_ERROR_MMP_PYTHON_NO_EXIST

15020,

*/MSP_ERROR_MMP_PYTHON_IMPORT_FAILED

15021,

*/MSP_ERROR_MMP_PYTHON_BAD_FUNC

15022,

*/MSP_ERROR_MMP_DB_DATA_ILLEGAL

15023,

*/MSP_ERROR_MMP_PMA_NOT_FOUND_STRATEGY

15025,

*/MSP_ERROR_MMP_PMC_SERVINFO_INVALID

15027,

*/MSP_ERROR_MMP_ALARM_GROUP_NULL

15028,

*/MSP_ERROR_MMP_ALARM_CONTXT_NULL

15029,

*/MSP_ERROR_LMOD_UNEXPECTED_BIN

16002,

*/MSP_ERROR_LMOD_RUNTIME_EXCEPTION

16005,

*/MSP_ERROR_LMOD_ALREADY_LOADED

16006,

exceptionMSP_ERROR_NGX_LOG_MORE_TOTEL_SIZE

18000,

checkingMSP_ERROR_FLASH_NETWORK_CONNECT_FIALED

19000,

/*flash服务端网络连接失败*/MSP_ERROR_FLASH_NETWORK_CHECK_FIALED

19001,

/*flash服务端响应了异常消息*/MSP_ERROR_FLASH_NETWORK_CHECK_TIMEOUT

19002,

/*flash服务端网络超时*/MSP_ERROR_FLASH_NETWORK_CLOSED_EXCEPTION

19003,

无有效的网络连接*/SPEECH_ERROR_NETWORK_TIMEOUT

20002,

网络连接超时*/SPEECH_ERROR_NET_EXPECTION

20003,

网络异常*/SPEECH_ERROR_INVALID_RESULT

20004,

未检测到语音*/SPEECH_ERROR_SPEECH_TIMEOUT

20008,

音频输入超时*/SPEECH_ERROR_EMPTY_UTTERANCE

20009,

无效的参数*/SPEECH_ERROR_TEXT_OVERFLOW

20013,

用户未登陆*/SPEECH_ERROR_PERMISSION_DENIED

20016,

*/SPEECH_ERROR_SYSTEM_PREINSTALL

20020,

*/SPEECH_ERROR_UNSATISFIED_LINK

20021,

*/SPEECH_ERROR_COMPONENT_NOT_INSTALLED

21001,

*/SPEECH_ERROR_ENGINE_NOT_SUPPORTED

21002,

*/SPEECH_ERROR_ENGINE_INIT_FAIL

21003,

*/SPEECH_ERROR_ENGINE_CALL_FAIL

21004,

/*客户端应用程序错误*///?????????SPEECH_ERROR_ASR_INVALID_PARA

23001,

/*无效的参数*/SPEECH_ERROR_ASR_INVALID_PARA_VALUE

23002,

/*无效的参数值*/SPEECH_ERROR_ASR_OUT_OF_MEMORY

23003,

/*内存耗尽*/SPEECH_ERROR_ASR_CREATE_HANDLE_FAILED

23004,

/*创建句柄失败*/SPEECH_ERROR_ASR_ENGINE_INIT_FAILED

23005,

/*引擎初始化失败*/SPEECH_ERROR_ASR_ENGINE_STARTED

23006,

/*引擎已经启动*/SPEECH_ERROR_ASR_ENGINE_UNINIT

23007,

/*引擎未初始化*/SPEECH_ERROR_ASR_SPEECH_TIMEOUT

23008,

/*识别超时VAD没开启或没有检测到后端点*/SPEECH_ERROR_ASR_NO_RECOGNIZED_RESULT

23009,

/*无识别结果*/SPEECH_ERROR_ASR_INVALID_HANDLE

23010,

/*无效的句柄*/SPEECH_ERROR_ASR_FILE_ACCESS

23011,

Engine*/SPEECH_ERROR_AITALK_FALSE

23100,

*/SPEECH_ERROR_AITALK_PERMISSION_DENIED

23101,

*/SPEECH_ERROR_AITALK_INVALID_PARA

23102,

3SPEECH_ERROR_AITALK_BUFFER_OVERFLOW

23103,

/*音频数据缓冲区已满*/SPEECH_ERROR_AITALK_FAILED

23104,

5SPEECH_ERROR_AITALK_NOT_SUPPORTED

23105,

/*引擎不支持*/SPEECH_ERROR_AITALK_OUT_OF_MEMORY

23106,

7SPEECH_ERROR_AITALK_INVALID_RESOURCE

23107,

/*资源无效*/SPEECH_ERROR_AITALK_NOT_FOUND

23108,

/*打开文件失败*/SPEECH_ERROR_AITALK_INVALID_GRAMMAR

23109,

*/SPEECH_ERROR_AITALK_INVALID_CALL

23110,

*/SPEECH_ERROR_AITALK_SYNTAX_ERROR

23111,

SPEECH_ERROR_AITALK_CANNOT_SAVE_FILE

23115,

*/SPEECH_ERROR_AITALK_INVALID_GRAMMAR_NAME

23116,

/*文法或词典名称非法*/SPEECH_ERROR_AITALK_BUFFER_EMPTY

23117,

18SPEECH_ERROR_AITALK_GET_RESULT

23118,

19SPEECH_ERROR_AITALK_REACT_OUT_TIME

23119,

/*反应超时*/SPEECH_ERROR_AITALK_SPEECH_OUT_TIME

23120,

/*语音超时*/SPEECH_ERROR_AITALK_AUDIO_CUT

23121,

/*录音质量过高*/SPEECH_ERROR_AITALK_AUDIO_LOWER

23122,

/*录音质量过低*/SPEECH_ERROR_AITALK_INSUFFICIENT_PERMISSIONS

23123,

/*授权不够*/SPEECH_ERROR_AITALK_RESULT_ERROR

23124,

/*解码器Wfst输出后,依然有cmd输出*/SPEECH_ERROR_AITALK_SHORT_PAUSE

23125,

27SPEECH_ERROR_AITALK_GRM_NOT_UPDATE

23127,

/*语法未更新*/SPEECH_ERROR_AITALK_STARTED

23128,

30SPEECH_ERROR_AITALK_ALREADY_STARTED

23130,

31SPEECH_ERROR_AITALK_ALREADY_STOPPED

23131,

32SPEECH_ERROR_AITALK_TOO_MANY_COMMAND

23132,

/*程序可能在做一些操作,主线程需要等待*/SPEECH_ERROR_AITALK_MAE_RIGHT

23134,

Operation*/SPEECH_ERROR_TTS_INVALID_PARA

24000,

*/SPEECH_ERROR_TTS_INVALID_PARA_VALUE

24001,

无效的参数值*/SPEECH_ERROR_TTS_OUT_OF_MEMORY

24002,

内存不足*/SPEECH_ERROR_TTS_INVALID_HANDLE

24003,

无效的句柄*/SPEECH_ERROR_TTS_CREATE_HANDLE_FAILED

24004,

创建句柄失败*/SPEECH_ERROR_TTS_INVALID_RESOURCE

24005,

*/SPEECH_ERROR_TTS_INVALID_VOICE_NAME

24006,

无效发言人*/SPEECH_ERROR_TTS_ENGINE_UNINIT

24007,

*/SPEECH_ERROR_TTS_ENGINE_INIT_FAILED

24008,

Engine*/SPEECH_ERROR_AISOUND_BASE

24100,SPEECH_ERROR_AISOUND_UNIMPEMENTED

24100,

*/SPEECH_ERROR_AISOUND_UNSUPPORTED

24101,

*/SPEECH_ERROR_AISOUND_INVALID_HANDLE

24102,

*/SPEECH_ERROR_AISOUND_INVALID_PARA

24103,

*/SPEECH_ERROR_AISOUND_INSUFFICIENT_HEAP

24104,

*/SPEECH_ERROR_AISOUND_STATE_REFUSE

24105,

*/SPEECH_ERROR_AISOUND_INVALID_PARA_ID

24106,

*/SPEECH_ERROR_AISOUND_INVALID_PARA_VALUE

24107,

*/SPEECH_ERROR_AISOUND_RESOURCE

24108,

*/SPEECH_ERROR_AISOUND_RESOURCE_READ

24109,

*/SPEECH_ERROR_AISOUND_LBENDIAN

24110,

*/SPEECH_ERROR_AISOUND_HEADFILE

24111,

*/SPEECH_ERROR_AISOUND_BUFFER_OVERFLOW

24112,

*/SPEECH_ERROR_AISOUND_INVALID_ISAMPA

24113,

alphabet*/SPEECH_ERROR_AISOUND_INVALID_CSSML

24114,

Operation*/SPEECH_ERROR_IVW_ENGINE_UNINI

25000,

*/SPEECH_ERROR_IVW_RESVER_NOMATCH

25001,

*/SPEECH_ERROR_IVW_BUFFERED_AUDIOD_LITTLE

25002,

*/SPEECH_ERROR_IVW_INVALID_RESTYPE

25003,

Engine*/SPEECH_ERROR_IVW_INVALID_CALL

25101,

3SPEECH_ERROR_IVW_OUT_OF_MEMORY

25104,

SPEECH_ERROR_IVW_OUT_BUFFER_FULL

25105,

5SPEECH_ERROR_IVW_OUT_BUFFER_EMPTY

25106,

SPEECH_ERROR_IVW_INVALID_RESOURCE

25107,

SPEECH_ERROR_IVW_REPETITIOPN_ENTER

25108,

SPEECH_ERROR_IVW_ENROLL1_SUCESS

25114,

SPEECH_ERROR_IVW_ENROLL1_FAILED

25115,

SPEECH_ERROR_IVW_ENROLL2_SUCESS

25116,

SPEECH_ERROR_IVW_ENROLL2_FAILED

25117,

SPEECH_ERROR_IVW_ENROLL3_SUCESS

25118,

SPEECH_ERROR_IVW_ENROLL3_FAILED

25119,

SPEECH_ERROR_IVW_SPEECH_TOO_SHORT

25120,

//第一块音频MSP_AUDIO_SAMPLE_CONTINUE

0x02,

//已经检测到了音频前端点,正在进行正常的音频处理MSP_EP_AFTER_SPEECH

//检测到音频的后端点,后记的音频会被msc忽略MSP_EP_TIMEOUT

//超时MSP_EP_ERROR

//识别成功,此时用户可以调用QISRGetResult来获取(部分结果)MSP_REC_STATUS_NO_MATCH

//识别结束,没有识别结果MSP_REC_STATUS_INCOMPLETE

//未完成

正在识别中MSP_REC_STATUS_NON_SPEECH_DETECTED

3,MSP_REC_STATUS_SPEECH_DETECTED

//识别结束MSP_REC_STATUS_MAX_CPU_TIME

9,MSP_REC_STATUS_NO_SPEECH_FOUND

#endregion#region

{XiaoYan,XuJiu,XiaoPing,XiaoJing,XuXiaoBao

WAV类

}3、封装AudioClipExtension类字节转AudioClip工具类

AudioClipExtension类

System.Runtime.InteropServices;

using

self.channels];self.GetData(samples,

0);var

2];Buffer.BlockCopy(samples_int16,

retBytes,

self.channels];self.GetData(samples,

0);var

2];Buffer.BlockCopy(samples_int16,

retBytes,

Mp3FileReader(mp3stream);//转换wave格式的代码MemoryStream

wavstream

MemoryStream(self);WaveFileReader

waveAudio

WaveFileReader(wavstream);WaveStream

waveStream

WaveFormatConversionStream.CreatePcmStream(waveAudio);MemoryStream

outputStream

byte[waveStream.Length];waveStream.Position

Convert.ToInt32(waveStream.Length));waveFileWriter.Write(bytes,

bytes.Length);waveFileWriter.Flush();}//

Convert

WAV(outputStream.ToArray());AudioClip

audioClip

false);audioClip.SetData(wav.LeftChannel,

0);return

Marshal.AllocHGlobal(size);byte[]

retValue;try{Marshal.StructureToPtr(self,

intPtr,

byte[size];Marshal.Copy(intPtr,

array,

array;}finally{Marshal.FreeHGlobal(intPtr);}return

retValue;}///

Mp3FileReader(mp3stream);//转换wave格式的代码MemoryStream

wavstream

MemoryStream(self);WaveFileReader

waveAudio

WaveFileReader(wavstream);WaveStream

waveStream

WaveFormatConversionStream.CreatePcmStream(waveAudio);MemoryStream

outputStream

byte[waveStream.Length];waveStream.Position

Convert.ToInt32(waveStream.Length));waveFileWriter.Write(bytes,

bytes.Length);waveFileWriter.Flush();}//

Convert

WAV(outputStream.ToArray());AudioClip

audioClip

false);audioClip.SetData(wav.LeftChannel,

0);return

Marshal.AllocHGlobal(size);byte[]

retValue;try{Marshal.StructureToPtr(self,

intPtr,

byte[size];Marshal.Copy(intPtr,

array,

array;}finally{Marshal.FreeHGlobal(intPtr);}return

retValue;}

System.Runtime.InteropServices;///

summary

MSCDLL.QISRSessionBegin(null,subiat,domainiat,languagezh_cn,accentmandarin,sample_rate16000,result_typeplain,result_encoding

utf-8,

EpStatus.MSP_EP_LOOKING_FOR_SPEECH;/*

用于记录识别状态

RecogStatus.MSP_REC_STATUS_SUCCESS;/*

调用音频写入接口

MSCDLL.QISRAudioWrite(sessionID,

clipBuffer,

AudioStatus.MSP_AUDIO_SAMPLE_CONTINUE,

ref

{res});MSCDLL.QISRSessionEnd(sessionID,

null;}res

MSCDLL.QISRAudioWrite(sessionID,

null,

AudioStatus.MSP_AUDIO_SAMPLE_LAST,

ref

{res});MSCDLL.QISRSessionEnd(sessionID,

null;}/*

RecogStatus.MSP_REC_STATUS_COMPLETE){IntPtr

curtRslt

MSCDLL.QISRGetResult(sessionID,

ref

{res});MSCDLL.QISRSessionEnd(sessionID,

null;}/*

4096);MSCDLL.QISRSessionEnd(sessionID,

sb.ToString();}sb.Append(Marshal.PtrToStringAnsi(curtRslt));}Thread.Sleep(150);}/*

获取完全部识别结果后

MSCDLL.QISRSessionEnd(sessionID,

gei

(string.IsNullOrEmpty(path)){Debug.Log(path

can

nameclip需要识别的AudioClip/param///

static

namecontent需要合成音频的文本内容/param///

static

aisbabyxu;break;default:break;}IntPtr

sessionID

MSCDLL.QTTSSessionBegin($engine_type

cloud,

(uint)Encoding.UTF8.GetByteCount(content),

string.Empty);if

SynthStatus.MSP_TTS_FLAG_STILL_HAVE_DATA;Listbyte[]

bytesList

(int)audioLength);bytesList.Add(byteArray);Thread.Sleep(150);if

(synthStatus

SynthStatus.MSP_TTS_FLAG_DATA_END

res

e){OnErrorEvent();Debug.Log($error:

{e.Message});return

header.Convert2Bytes();bytesList.Insert(0,

array);size

MSCDLL.QTTSSessionEnd(sessionID,

gei

namepath将合成后的音频写入指定的路径/param///

returns调用成功返回true

MSCDLL.QTTSSessionBegin(engine_type

cloud,

(uint)Encoding.UTF8.GetByteCount(content),

string.Empty);if

SynthStatus.MSP_TTS_FLAG_STILL_HAVE_DATA;/*

开启一个流

(int)audioLength);ms.Write(byteArray,

(int)audioLength);Thread.Sleep(150);if

(synthStatus

SynthStatus.MSP_TTS_FLAG_DATA_END

res

e){OnErrorEvent();Debug.Log($error:

{e.Message});return

GetWaveHeader((int)ms.Length);byte[]

array

header.Convert2Bytes();ms.Position

0L;ms.Write(array,

FileAccess.Write);ms.WriteTo(fs);ms.Close();fs.Close();res

MSCDLL.QTTSSessionEnd(sessionID,

gei

就随便搭建的不会搭建UI的可以下载我的源工程里面有搭建好的重要的代码。

2新建脚本命名为ExampleTTS.cs双击打开脚本编辑代码

using

Start(){//SpeakCoroutine(你好我是小燕);for

(int

i;m_BtnPerson[i].onClick.AddListener(()

BtnPersonEvent(index));}m_Slide.OnEventTriggerEvent(EventTriggerType.PointerDown,

true;});m_Slide.OnEventTriggerEvent(EventTriggerType.PointerUp,

{m_AudioSource.time

m_AudioSource.clip.length;m_AudioSource.Play();onDrag

false;});m_BtnPlay.onClick.AddListener(BtnPlayEvent);m_BtnSave.onClick.AddListener(BtnSaveEvent);voicetype

Update(){if

ToTimeFormat((float)m_AudioSource.time),

ToTimeFormat((float)m_AudioSource.clip.length));}if

(!onDrag){if

m_AudioSource.clip.length);}}}///

summary///

恢复上一个按钮的状态m_BtnPerson[nextIndex].transform.Find(Select).gameObject.SetActive(false);m_BtnPerson[nextIndex].GetComponentInChildrenText().color

Color.black;//

index;m_BtnPerson[nextIndex].transform.Find(Select).gameObject.SetActive(true);m_BtnPerson[nextIndex].GetComponentInChildrenText().color

Color.blue;switch

TtsVoice.XuXiaoBao;break;default:break;}}///

summary///

未输入文本;return;}CreateVoice(voicetype,

{TextTips.text

未输入文本;return;}//使用时间戳作为文件名string

path

Path.Combine(Application.streamingAssetsPath,

DateTime.Now.Ticks

action){StartCoroutine(TtsCoroutine(voice,

action));}///

action){StartCoroutine(TtsCoroutine(path,

voice,

WaitForSeconds(0.1f);m_AudioSource.clip

voice);bool

isFinish);action?.Invoke();}IEnumerator

TtsCoroutine(string

isFinsh);action?.Invoke();}//时长用0000显示public

string

}Slider的拖动事件用了EventTrigger事件监听所以需要新建脚本UIBehaviourExtension.cs编辑代码

using

UnityEngine.EventSystems;public

static

self.GetComponentEventTrigger()

self.gameObject.AddComponentEventTrigger();EventTrigger.Entry

entry

};entry.callback.AddListener(action);eventTrigger.triggers.Add(entry);return

self;}

https://gitcode.net/q764424567/demo_tts

如果觉得本篇文章有用别忘了点个关注关注不迷路持续分享更多Unity干货文章。

专栏方向简介Unity3D开发小游戏小游戏开发教程分享一些使用Unity3D引擎开发的小游戏分享一些制作小游戏的教程。

Unity3D从入门到进阶入门从自学Unity中获取灵感总结从零开始学习Unity的路线有C#和Unity的知识。

Unity3D之UGUIUGUIUnity的UI系统UGUI全解析从UGUI的基础控件开始讲起然后将UGUI的原理UGUI的使用全面教学。

Unity3D之读取数据文件读取使用Unity3D读取txt文档、json文档、xml文档、csv文档、Excel文档。

Unity3D之数据集合数据集合数组集合数组、List、字典、堆栈、链表等数据集合知识分享。

Unity3D之VR/AR虚拟仿真开发虚拟仿真总结博主工作常见的虚拟仿真需求进行案例讲解。

Unity3D之插件插件主要分享在Unity开发中用到的一些插件使用方法插件介绍等Unity3D之日常开发日常记录主要是博主日常开发中用到的用到的方法技巧开发思路代码分享等Unity3D之日常BUG日常记录记录在使用Unity3D编辑器开发项目过程中遇到的BUG和坑让后来人可以有些参考。



SEO优化服务概述

作为专业的SEO优化服务提供商,我们致力于通过科学、系统的搜索引擎优化策略,帮助企业在百度、Google等搜索引擎中获得更高的排名和流量。我们的服务涵盖网站结构优化、内容优化、技术SEO和链接建设等多个维度。

百度官方合作伙伴 白帽SEO技术 数据驱动优化 效果长期稳定

SEO优化核心服务

网站技术SEO

  • 网站结构优化 - 提升网站爬虫可访问性
  • 页面速度优化 - 缩短加载时间,提高用户体验
  • 移动端适配 - 确保移动设备友好性
  • HTTPS安全协议 - 提升网站安全性与信任度
  • 结构化数据标记 - 增强搜索结果显示效果

内容优化服务

  • 关键词研究与布局 - 精准定位目标关键词
  • 高质量内容创作 - 原创、专业、有价值的内容
  • Meta标签优化 - 提升点击率和相关性
  • 内容更新策略 - 保持网站内容新鲜度
  • 多媒体内容优化 - 图片、视频SEO优化

外链建设策略

  • 高质量外链获取 - 权威网站链接建设
  • 品牌提及监控 - 追踪品牌在线曝光
  • 行业目录提交 - 提升网站基础权威
  • 社交媒体整合 - 增强内容传播力
  • 链接质量分析 - 避免低质量链接风险

SEO服务方案对比

服务项目 基础套餐 标准套餐 高级定制
关键词优化数量 10-20个核心词 30-50个核心词+长尾词 80-150个全方位覆盖
内容优化 基础页面优化 全站内容优化+每月5篇原创 个性化内容策略+每月15篇原创
技术SEO 基本技术检查 全面技术优化+移动适配 深度技术重构+性能优化
外链建设 每月5-10条 每月20-30条高质量外链 每月50+条多渠道外链
数据报告 月度基础报告 双周详细报告+分析 每周深度报告+策略调整
效果保障 3-6个月见效 2-4个月见效 1-3个月快速见效

SEO优化实施流程

我们的SEO优化服务遵循科学严谨的流程,确保每一步都基于数据分析和行业最佳实践:

1

网站诊断分析

全面检测网站技术问题、内容质量、竞争对手情况,制定个性化优化方案。

2

关键词策略制定

基于用户搜索意图和商业目标,制定全面的关键词矩阵和布局策略。

3

技术优化实施

解决网站技术问题,优化网站结构,提升页面速度和移动端体验。

4

内容优化建设

创作高质量原创内容,优化现有页面,建立内容更新机制。

5

外链建设推广

获取高质量外部链接,建立品牌在线影响力,提升网站权威度。

6

数据监控调整

持续监控排名、流量和转化数据,根据效果调整优化策略。

SEO优化常见问题

SEO优化一般需要多长时间才能看到效果?
SEO是一个渐进的过程,通常需要3-6个月才能看到明显效果。具体时间取决于网站现状、竞争程度和优化强度。我们的标准套餐一般在2-4个月内开始显现效果,高级定制方案可能在1-3个月内就能看到初步成果。
你们使用白帽SEO技术还是黑帽技术?
我们始终坚持使用白帽SEO技术,遵循搜索引擎的官方指南。我们的优化策略注重长期效果和可持续性,绝不使用任何可能导致网站被惩罚的违规手段。作为百度官方合作伙伴,我们承诺提供安全、合规的SEO服务。
SEO优化后效果能持续多久?
通过我们的白帽SEO策略获得的排名和流量具有长期稳定性。一旦网站达到理想排名,只需适当的维护和更新,效果可以持续数年。我们提供优化后维护服务,确保您的网站长期保持竞争优势。
你们提供SEO优化效果保障吗?
我们提供基于数据的SEO效果承诺。根据服务套餐不同,我们承诺在约定时间内将核心关键词优化到指定排名位置,或实现约定的自然流量增长目标。所有承诺都会在服务合同中明确约定,并提供详细的KPI衡量标准。

SEO优化效果数据

基于我们服务的客户数据统计,平均优化效果如下:

+85%
自然搜索流量提升
+120%
关键词排名数量
+60%
网站转化率提升
3-6月
平均见效周期

行业案例 - 制造业

  • 优化前:日均自然流量120,核心词无排名
  • 优化6个月后:日均自然流量950,15个核心词首页排名
  • 效果提升:流量增长692%,询盘量增加320%

行业案例 - 电商

  • 优化前:月均自然订单50单,转化率1.2%
  • 优化4个月后:月均自然订单210单,转化率2.8%
  • 效果提升:订单增长320%,转化率提升133%

行业案例 - 教育

  • 优化前:月均咨询量35个,主要依赖付费广告
  • 优化5个月后:月均咨询量180个,自然流量占比65%
  • 效果提升:咨询量增长414%,营销成本降低57%

为什么选择我们的SEO服务

专业团队

  • 10年以上SEO经验专家带队
  • 百度、Google认证工程师
  • 内容创作、技术开发、数据分析多领域团队
  • 持续培训保持技术领先

数据驱动

  • 自主研发SEO分析工具
  • 实时排名监控系统
  • 竞争对手深度分析
  • 效果可视化报告

透明合作

  • 清晰的服务内容和价格
  • 定期进展汇报和沟通
  • 效果数据实时可查
  • 灵活的合同条款

我们的SEO服务理念

我们坚信,真正的SEO优化不仅仅是追求排名,而是通过提供优质内容、优化用户体验、建立网站权威,最终实现可持续的业务增长。我们的目标是与客户建立长期合作关系,共同成长。

提交需求或反馈

Demand feedback