|
|
- /**
- * 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
- };
|