/** * UniApp TTS接口配置文件 * 用于配置文字转语音相关的API接口和参数 */ // API配置 export const API_CONFIG = { // 开发环境API地址 DEV_BASE_URL: 'http://localhost:8080', // 生产环境API地址(请根据实际情况修改) PROD_BASE_URL: 'https://your-domain.com', // 接口路径 ENDPOINTS: { // 获取音色列表 VOICE_LIST: '/appletApi/tts/list', // 文字转语音 TEXT_TO_VOICE: '/appletApi/tts/textToVoice' }, // 请求超时时间(毫秒) TIMEOUT: 30000 }; // TTS参数配置 export const TTS_CONFIG = { // 语速配置 SPEED: { MIN: -2, MAX: 6, DEFAULT: 0, OPTIONS: [ { value: -2, label: '0.6倍速', description: '很慢' }, { value: -1, label: '0.8倍速', description: '慢' }, { value: 0, label: '1.0倍速', description: '正常' }, { value: 1, label: '1.2倍速', description: '快' }, { value: 2, label: '1.5倍速', description: '很快' }, { value: 6, label: '2.5倍速', description: '极快' } ] }, // 音量配置 VOLUME: { MIN: -10, MAX: 10, DEFAULT: 0 }, // 音频格式配置 CODEC: { OPTIONS: [ { value: 'wav', label: 'WAV', description: '无损音质,文件较大' }, { value: 'mp3', label: 'MP3', description: '压缩音质,文件适中' }, { value: 'pcm', label: 'PCM', description: '原始音频,文件最大' } ], DEFAULT: 'wav' }, // 文本限制 TEXT: { MAX_LENGTH: 500, MIN_LENGTH: 1 } }; // 错误码配置 export const ERROR_CODES = { // 网络错误 NETWORK_ERROR: 'NETWORK_ERROR', // 参数错误 PARAM_ERROR: 'PARAM_ERROR', // 服务器错误 SERVER_ERROR: 'SERVER_ERROR', // 音频播放错误 AUDIO_ERROR: 'AUDIO_ERROR', // 文件操作错误 FILE_ERROR: 'FILE_ERROR' }; // 错误消息配置 export const ERROR_MESSAGES = { [ERROR_CODES.NETWORK_ERROR]: '网络连接失败,请检查网络设置', [ERROR_CODES.PARAM_ERROR]: '参数错误,请检查输入内容', [ERROR_CODES.SERVER_ERROR]: '服务器错误,请稍后重试', [ERROR_CODES.AUDIO_ERROR]: '音频播放失败,请重试', [ERROR_CODES.FILE_ERROR]: '文件操作失败,请重试' }; // 工具函数 export const UTILS = { /** * 获取当前环境的API基础地址 */ getBaseUrl() { // #ifdef MP-WEIXIN // 微信小程序环境 return process.env.NODE_ENV === 'production' ? API_CONFIG.PROD_BASE_URL : API_CONFIG.DEV_BASE_URL; // #endif // #ifdef H5 // H5环境 return process.env.NODE_ENV === 'production' ? API_CONFIG.PROD_BASE_URL : API_CONFIG.DEV_BASE_URL; // #endif // #ifdef APP-PLUS // App环境 return API_CONFIG.PROD_BASE_URL; // #endif return API_CONFIG.DEV_BASE_URL; }, /** * 构建完整的API地址 * @param {string} endpoint 接口路径 */ buildApiUrl(endpoint) { return this.getBaseUrl() + endpoint; }, /** * 格式化文件大小 * @param {number} bytes 字节数 */ formatFileSize(bytes) { if (bytes === 0) return '0 B'; const k = 1024; const sizes = ['B', 'KB', 'MB', 'GB']; const i = Math.floor(Math.log(bytes) / Math.log(k)); return parseFloat((bytes / Math.pow(k, i)).toFixed(2)) + ' ' + sizes[i]; }, /** * 验证文本长度 * @param {string} text 文本内容 */ validateText(text) { if (!text || typeof text !== 'string') { return { valid: false, message: '请输入文本内容' }; } const trimmedText = text.trim(); if (trimmedText.length < TTS_CONFIG.TEXT.MIN_LENGTH) { return { valid: false, message: '文本内容不能为空' }; } if (trimmedText.length > TTS_CONFIG.TEXT.MAX_LENGTH) { return { valid: false, message: `文本长度不能超过${TTS_CONFIG.TEXT.MAX_LENGTH}个字符` }; } return { valid: true, text: trimmedText }; }, /** * 验证语速参数 * @param {number} speed 语速值 */ validateSpeed(speed) { if (typeof speed !== 'number') { return { valid: false, message: '语速参数必须为数字' }; } if (speed < TTS_CONFIG.SPEED.MIN || speed > TTS_CONFIG.SPEED.MAX) { return { valid: false, message: `语速范围为${TTS_CONFIG.SPEED.MIN}到${TTS_CONFIG.SPEED.MAX}` }; } return { valid: true, speed }; }, /** * 验证音量参数 * @param {number} volume 音量值 */ validateVolume(volume) { if (typeof volume !== 'number') { return { valid: false, message: '音量参数必须为数字' }; } if (volume < TTS_CONFIG.VOLUME.MIN || volume > TTS_CONFIG.VOLUME.MAX) { return { valid: false, message: `音量范围为${TTS_CONFIG.VOLUME.MIN}到${TTS_CONFIG.VOLUME.MAX}` }; } return { valid: true, volume }; }, /** * 获取语速描述 * @param {number} speed 语速值 */ getSpeedDescription(speed) { const option = TTS_CONFIG.SPEED.OPTIONS.find(item => item.value === speed); return option ? option.description : '未知'; }, /** * 获取音频格式描述 * @param {string} codec 音频格式 */ getCodecDescription(codec) { const option = TTS_CONFIG.CODEC.OPTIONS.find(item => item.value === codec); return option ? option.description : '未知格式'; }, /** * 生成唯一ID */ generateId() { return 'id_' + Date.now() + '_' + Math.random().toString(36).substr(2, 9); }, /** * 获取当前时间戳 */ getCurrentTimestamp() { return Date.now(); }, /** * 格式化时间 * @param {number} timestamp 时间戳 */ formatTime(timestamp) { const date = new Date(timestamp); return date.toLocaleString('zh-CN', { year: 'numeric', month: '2-digit', day: '2-digit', hour: '2-digit', minute: '2-digit', second: '2-digit' }); } }; // 默认导出配置对象 export default { API_CONFIG, TTS_CONFIG, ERROR_CODES, ERROR_MESSAGES, UTILS };