UNPKG

@coze/uniapp-api

Version:

Official Coze UniApp SDK for seamless AI integration into your applications | 扣子官方 UniApp SDK,助您轻松集成 AI 能力到应用中

60 lines (59 loc) 1.82 kB
"use strict"; /** * G.711 codec implementation for A-law and μ-law */ Object.defineProperty(exports, "__esModule", { value: true }); exports.decodeAlaw = decodeAlaw; exports.decodeUlaw = decodeUlaw; // A-law to linear PCM conversion table const ALAW_TO_LINEAR_TABLE = new Int16Array(256); // μ-law to linear PCM conversion table const ULAW_TO_LINEAR_TABLE = new Int16Array(256); // Initialize conversion tables (function initTables() { // A-law to linear PCM conversion for (let i = 0; i < 256; i++) { const aval = i ^ 0x55; let t = (aval & 0x0f) << 4; const seg = (aval & 0x70) >> 4; if (seg) { t = (t + 0x108) << (seg - 1); } else { t += 8; } ALAW_TO_LINEAR_TABLE[i] = aval & 0x80 ? t : -t; } // μ-law to linear PCM conversion for (let i = 0; i < 256; i++) { const uval = ~i; let t = ((uval & 0x0f) << 3) + 0x84; const seg = (uval & 0x70) >> 4; t <<= seg; ULAW_TO_LINEAR_TABLE[i] = uval & 0x80 ? 0x84 - t : t - 0x84; } })(); /** * Converts G.711 A-law encoded data to PCM16 format * @param {Uint8Array} alawData - A-law encoded data * @returns {Int16Array} - PCM16 data */ function decodeAlaw(alawData) { const pcmData = new Int16Array(alawData.length); for (let i = 0; i < alawData.length; i++) { pcmData[i] = ALAW_TO_LINEAR_TABLE[alawData[i]]; } return pcmData; } /** * Converts G.711 μ-law encoded data to PCM16 format * @param {Uint8Array} ulawData - μ-law encoded data * @returns {Int16Array} - PCM16 data */ function decodeUlaw(ulawData) { const pcmData = new Int16Array(ulawData.length); for (let i = 0; i < ulawData.length; i++) { pcmData[i] = ULAW_TO_LINEAR_TABLE[ulawData[i]]; } return pcmData; }