UNPKG

@mt-utils/xunfei-tts

Version:

讯飞TTS 文本转语音

193 lines (192 loc) 5.18 kB
/** * 平台系统配置 */ interface SystemConfig { /** * 在平台申请的密钥信息 */ readonly API_SECRET: string; /** * 在平台申请的APPID信息 */ readonly APPID: string; /** * 在平台申请的API_KEY信息 */ readonly API_KEY: string; } /** * 公共参数接口 */ interface CommonParams { /** * 在平台申请的APPID信息 */ app_id: string; } /** * 业务参数接口 */ interface BusinessParams { /** * 音频编码 * - 'raw': 未压缩的pcm * - 'lame': mp3 (当aue=lame时需传参sfl=1) * - 'speex-org-wb;7': 标准开源speex(for speex_wideband,即16k)数字代表指定压缩等级(默认等级为8) * - 'speex-org-nb;7': 标准开源speex(for speex_narrowband,即8k)数字代表指定压缩等级(默认等级为8) * - 'speex;7': 压缩格式,压缩等级1~10,默认为7(8k讯飞定制speex) * - 'speex-wb;7': 压缩格式,压缩等级1~10,默认为7(16k讯飞定制speex) */ aue: 'raw' | 'lame' | 'speex-org-wb;7' | 'speex-org-nb;7' | 'speex;7' | 'speex-wb;7'; /** * 需要配合aue=lame使用,开启流式返回 * 取值:1 开启 */ sfl?: 1; /** * 音频采样率 * - 'audio/L16;rate=8000': 合成8K 的音频 * - 'audio/L16;rate=16000': 合成16K 的音频 * - 不传值:合成16K 的音频 */ auf?: 'audio/L16;rate=8000' | 'audio/L16;rate=16000'; /** * 发音人,可选值:请到控制台添加试用或购买发音人,添加后即显示发音人参数值 */ vcn: string; /** * 语速,可选值:[0-100],默认为50 */ speed?: number; /** * 音量,可选值:[0-100],默认为50 */ volume?: number; /** * 音高,可选值:[0-100],默认为50 */ pitch?: number; /** * 合成音频的背景音 * - 0: 无背景音(默认值) * - 1: 有背景音 */ bgs?: 0 | 1; /** * 文本编码格式 * - 'GB2312': GB2312 * - 'GBK': GBK * - 'BIG5': BIG5 * - 'UNICODE': UNICODE(小语种必须使用UNICODE编码,合成的文本需使用utf16小端的编码方式) * - 'GB18030': GB18030 * - 'UTF8': UTF8(小语种) */ tte?: 'GB2312' | 'GBK' | 'BIG5' | 'UNICODE' | 'GB18030' | 'UTF8'; /** * 设置英文发音方式: * - 0:自动判断处理,如果不确定将按照英文词语拼写处理(缺省) * - 1:所有英文按字母发音 * - 2:自动判断处理,如果不确定将按照字母朗读 */ reg?: '0' | '1' | '2'; /** * 合成音频数字发音方式 * - 0:自动判断(默认值) * - 1:完全数值 * - 2:完全字符串 * - 3:字符串优先 */ rdn?: '0' | '1' | '2' | '3'; } /** * 业务数据流参数接口 */ interface DataParams { /** * 文本内容,需进行base64编码; * base64编码前最大长度需小于8000字节,约2000汉字 */ text: string; /** * 数据状态,固定为2 * 注:由于流式合成的文本只能一次性传输,不支持多次分段传输,此处status必须为2。 */ status: 2; } /** * 请求参数 */ interface RequestParams { common: CommonParams; business: BusinessParams; data: DataParams; } /** * 内部使用的事件名称 */ type PrivateCustomEventName = /** * 文本切割 */ '_textSplitFinish' /** * tts请求执行 */ | '_ttsRequestFinish' /** * 响应转码执行 */ | '_responseTranscodeFinish' /** * 音频播放执行 */ | '_audioActuatorFinish' | '_audioActuatorBeforeFirstExecute' /** * 当前整个应用 */ | '_appStart' | '_appFinish'; /** * 对外暴露的事件名称 */ type PublicCustomEventName = 'appCreate' | 'appActive' | 'appStart' | 'appFinish' | 'audioFirstStart'; /** * 发送消息给worker */ interface SendWorkerMessage<T = any> { readonly type: 'send'; readonly data?: T; } /** * 接收来自worker的消息 */ interface ReplyWorkerMessage<T = any> { readonly type: 'success'; readonly data: T; } type CustomEventCallback = (data?: any) => void; /** * 文本切割原始数据 */ interface TextSplitOriginal { text: string; options?: { /** * 在进行文本分割的时,分割到最后的时候,是否将文本追加到文本分割器中 * 比如:”你好哦,我是李白,喜欢做“ 会被分割为['你好哦,', '我是李白,'] * '喜欢做'会被到下一次send文本一同处理,但是如果是最后一次,就不会有下一次的send,所有需要直接追加 */ isAppend: boolean; }; } declare enum SystemStatus { /** * 空闲状态 */ OFFLINE = "offline", /** * 执行中 */ EXECUTE = "execute" } export type { SystemConfig, CommonParams, BusinessParams, DataParams, RequestParams, PrivateCustomEventName, PublicCustomEventName, CustomEventCallback, SendWorkerMessage, ReplyWorkerMessage, TextSplitOriginal }; export { SystemStatus };