UNPKG

xunfei-tts

Version:

借助“讯飞在线语音合成API”实现浏览器端“文本转语音

235 lines (210 loc) 5 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 /** * 文本编码格式 * - 'UNICODE': UNICODE(小语种必须使用UNICODE编码,合成的文本需使用utf16小端的编码方式) * - 'UTF8': UTF8(小语种) */ tte?: 'unicode' | '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' /** * 音频解码执行 */ | '_decodeDataFinish' /** * 音频播放执行 */ | '_audioActuatorFinish' | '_audioActuatorBeforeFirstExecute' /** * 当前整个应用 */ | '_appFinish' /** * 对外暴露的事件名称 */ type PublicCustomEventName = | 'appFinish' | 'audioFirstStart' enum SystemStatus { /** * 空闲状态 */ OFFLINE = 'offline', /** * 执行中 */ EXECUTE = 'execute', } /** * TTS WebSocket响应数据接口 */ interface TtsWebSocketResponse { /** * 返回码,0表示成功,其它表示异常 */ code: number /** * 描述信息 */ message: string /** * 响应数据,可能为null */ data: { /** * 合成后的音频片段,采用base64编码 */ audio: string /** * 当前音频流状态,1表示合成中,2表示合成结束 */ status: 1 | 2 /** * 合成进度,指当前合成文本的字节数 * 注:请注意合成是以句为单位切割的,若文本只有一句话,则每次返回结果的ced是相同的 */ ced: string } | null /** * 本次会话的id,只在第一帧请求时返回 */ sid?: string } export type { BusinessParams, CommonParams, DataParams, PrivateCustomEventName, PublicCustomEventName, RequestParams, SystemConfig, TtsWebSocketResponse, } export { SystemStatus }