{"version":3,"sources":["src/sdk/Audio/AudioOutputFormat.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAC5D,OAAO,EAAE,2BAA2B,EAAE,MAAM,mCAAmC,CAAC;AAChF,OAAO,EAAE,cAAc,EAAE,qBAAqB,EAAE,MAAM,wBAAwB,CAAC;AAE/E;;;;GAIG;AAEH,qBAAa,qBAAsB,SAAQ,qBAAqB;IAC5D,OAAc,mCAAmC,EAAE,iBAAiB,CAAC,MAAM,CAAC,CAwC1E;IACF,OAAO,CAAC,oBAAoB,CAAS;IACrC;;;OAGG;IACH,OAAO,CAAC,QAAQ,CAAC,2BAA2B,CAAS;IACrD,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAU;IAEvC;;;;;;;;;;;;OAYG;gBACgB,SAAS,EAAE,cAAc,EACzB,QAAQ,EAAE,MAAM,EAChB,aAAa,EAAE,MAAM,EACrB,cAAc,EAAE,MAAM,EACtB,UAAU,EAAE,MAAM,EAClB,aAAa,EAAE,MAAM,EACrB,iBAAiB,EAAE,MAAM,EACzB,wBAAwB,EAAE,MAAM,EAChC,SAAS,EAAE,OAAO;WAUvB,+BAA+B,CAAC,2BAA2B,CAAC,EAAE,2BAA2B,GAAG,qBAAqB;WAQjH,qCAAqC,CAAC,iCAAiC,EAAE,MAAM,GAAG,qBAAqB;WA0cvG,sBAAsB,IAAI,qBAAqB;IAK7D;;;;;OAKG;IACI,SAAS,EAAE,cAAc,CAAC;IAEjC;;;;;OAKG;IACH,IAAW,SAAS,IAAI,OAAO,CAE9B;IAED;;;;;OAKG;IACH,IAAW,MAAM,IAAI,WAAW,CAK/B;IAED;;;;;;OAMG;IACI,YAAY,CAAC,WAAW,EAAE,MAAM,GAAG,IAAI;IAQ9C;;;;;OAKG;IACH,IAAW,wBAAwB,IAAI,MAAM,CAE5C;IAED;;;;OAIG;IAEI,SAAS,CAAC,KAAK,EAAE,WAAW,GAAG,WAAW;CAWpD","file":"AudioOutputFormat.d.ts","sourcesContent":["// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\nimport { INumberDictionary } from \"../../common/Exports.js\";\r\nimport { SpeechSynthesisOutputFormat } from \"../SpeechSynthesisOutputFormat.js\";\r\nimport { AudioFormatTag, AudioStreamFormatImpl } from \"./AudioStreamFormat.js\";\r\n\r\n/**\r\n * @private\r\n * @class AudioOutputFormatImpl\r\n * Updated in version 1.17.0\r\n */\r\n// eslint-disable-next-line max-classes-per-file\r\nexport class AudioOutputFormatImpl extends AudioStreamFormatImpl {\r\n    public static SpeechSynthesisOutputFormatToString: INumberDictionary<string> = {\r\n        [SpeechSynthesisOutputFormat.Raw8Khz8BitMonoMULaw]: \"raw-8khz-8bit-mono-mulaw\",\r\n        [SpeechSynthesisOutputFormat.Riff16Khz16KbpsMonoSiren]: \"riff-16khz-16kbps-mono-siren\",\r\n        [SpeechSynthesisOutputFormat.Audio16Khz16KbpsMonoSiren]: \"audio-16khz-16kbps-mono-siren\",\r\n        [SpeechSynthesisOutputFormat.Audio16Khz32KBitRateMonoMp3]: \"audio-16khz-32kbitrate-mono-mp3\",\r\n        [SpeechSynthesisOutputFormat.Audio16Khz128KBitRateMonoMp3]: \"audio-16khz-128kbitrate-mono-mp3\",\r\n        [SpeechSynthesisOutputFormat.Audio16Khz64KBitRateMonoMp3]: \"audio-16khz-64kbitrate-mono-mp3\",\r\n        [SpeechSynthesisOutputFormat.Audio24Khz48KBitRateMonoMp3]: \"audio-24khz-48kbitrate-mono-mp3\",\r\n        [SpeechSynthesisOutputFormat.Audio24Khz96KBitRateMonoMp3]: \"audio-24khz-96kbitrate-mono-mp3\",\r\n        [SpeechSynthesisOutputFormat.Audio24Khz160KBitRateMonoMp3]: \"audio-24khz-160kbitrate-mono-mp3\",\r\n        [SpeechSynthesisOutputFormat.Raw16Khz16BitMonoTrueSilk]: \"raw-16khz-16bit-mono-truesilk\",\r\n        [SpeechSynthesisOutputFormat.Riff16Khz16BitMonoPcm]: \"riff-16khz-16bit-mono-pcm\",\r\n        [SpeechSynthesisOutputFormat.Riff8Khz16BitMonoPcm]: \"riff-8khz-16bit-mono-pcm\",\r\n        [SpeechSynthesisOutputFormat.Riff24Khz16BitMonoPcm]: \"riff-24khz-16bit-mono-pcm\",\r\n        [SpeechSynthesisOutputFormat.Riff8Khz8BitMonoMULaw]: \"riff-8khz-8bit-mono-mulaw\",\r\n        [SpeechSynthesisOutputFormat.Raw16Khz16BitMonoPcm]: \"raw-16khz-16bit-mono-pcm\",\r\n        [SpeechSynthesisOutputFormat.Raw24Khz16BitMonoPcm]: \"raw-24khz-16bit-mono-pcm\",\r\n        [SpeechSynthesisOutputFormat.Raw8Khz16BitMonoPcm]: \"raw-8khz-16bit-mono-pcm\",\r\n        [SpeechSynthesisOutputFormat.Ogg16Khz16BitMonoOpus]: \"ogg-16khz-16bit-mono-opus\",\r\n        [SpeechSynthesisOutputFormat.Ogg24Khz16BitMonoOpus]: \"ogg-24khz-16bit-mono-opus\",\r\n        [SpeechSynthesisOutputFormat.Raw48Khz16BitMonoPcm]: \"raw-48khz-16bit-mono-pcm\",\r\n        [SpeechSynthesisOutputFormat.Riff48Khz16BitMonoPcm]: \"riff-48khz-16bit-mono-pcm\",\r\n        [SpeechSynthesisOutputFormat.Audio48Khz96KBitRateMonoMp3]: \"audio-48khz-96kbitrate-mono-mp3\",\r\n        [SpeechSynthesisOutputFormat.Audio48Khz192KBitRateMonoMp3]: \"audio-48khz-192kbitrate-mono-mp3\",\r\n        [SpeechSynthesisOutputFormat.Ogg48Khz16BitMonoOpus]: \"ogg-48khz-16bit-mono-opus\",\r\n        [SpeechSynthesisOutputFormat.Webm16Khz16BitMonoOpus]: \"webm-16khz-16bit-mono-opus\",\r\n        [SpeechSynthesisOutputFormat.Webm24Khz16BitMonoOpus]: \"webm-24khz-16bit-mono-opus\",\r\n        [SpeechSynthesisOutputFormat.Webm24Khz16Bit24KbpsMonoOpus]: \"webm-24khz-16bit-24kbps-mono-opus\",\r\n        [SpeechSynthesisOutputFormat.Raw24Khz16BitMonoTrueSilk]: \"raw-24khz-16bit-mono-truesilk\",\r\n        [SpeechSynthesisOutputFormat.Raw8Khz8BitMonoALaw]: \"raw-8khz-8bit-mono-alaw\",\r\n        [SpeechSynthesisOutputFormat.Riff8Khz8BitMonoALaw]: \"riff-8khz-8bit-mono-alaw\",\r\n        [SpeechSynthesisOutputFormat.Audio16Khz16Bit32KbpsMonoOpus]: \"audio-16khz-16bit-32kbps-mono-opus\",\r\n        [SpeechSynthesisOutputFormat.Audio24Khz16Bit48KbpsMonoOpus]: \"audio-24khz-16bit-48kbps-mono-opus\",\r\n        [SpeechSynthesisOutputFormat.Audio24Khz16Bit24KbpsMonoOpus]: \"audio-24khz-16bit-24kbps-mono-opus\",\r\n        [SpeechSynthesisOutputFormat.Raw22050Hz16BitMonoPcm]: \"raw-22050hz-16bit-mono-pcm\",\r\n        [SpeechSynthesisOutputFormat.Riff22050Hz16BitMonoPcm]: \"riff-22050hz-16bit-mono-pcm\",\r\n        [SpeechSynthesisOutputFormat.Raw44100Hz16BitMonoPcm]: \"raw-44100hz-16bit-mono-pcm\",\r\n        [SpeechSynthesisOutputFormat.Riff44100Hz16BitMonoPcm]: \"riff-44100hz-16bit-mono-pcm\",\r\n        [SpeechSynthesisOutputFormat.AmrWb16000Hz]: \"amr-wb-16000hz\",\r\n        [SpeechSynthesisOutputFormat.G72216Khz64Kbps]: \"g722-16khz-64kbps\",\r\n    };\r\n    private priAudioFormatString: string;\r\n    /**\r\n     * audio format string for synthesis request, which may differ from priAudioFormatString.\r\n     * e.g. for riff format, we will request raw format and add a header in SDK side.\r\n     */\r\n    private readonly priRequestAudioFormatString: string;\r\n    private readonly priHasHeader: boolean;\r\n\r\n    /**\r\n     * Creates an instance with the given values.\r\n     * @constructor\r\n     * @param formatTag\r\n     * @param {number} channels - Number of channels.\r\n     * @param {number} samplesPerSec - Samples per second.\r\n     * @param {number} avgBytesPerSec - Average bytes per second.\r\n     * @param {number} blockAlign - Block alignment.\r\n     * @param {number} bitsPerSample - Bits per sample.\r\n     * @param {string} audioFormatString - Audio format string\r\n     * @param {string} requestAudioFormatString - Audio format string sent to service.\r\n     * @param {boolean} hasHeader - If the format has header or not.\r\n     */\r\n    public constructor(formatTag: AudioFormatTag,\r\n                       channels: number,\r\n                       samplesPerSec: number,\r\n                       avgBytesPerSec: number,\r\n                       blockAlign: number,\r\n                       bitsPerSample: number,\r\n                       audioFormatString: string,\r\n                       requestAudioFormatString: string,\r\n                       hasHeader: boolean) {\r\n        super(samplesPerSec, bitsPerSample, channels, formatTag);\r\n        this.formatTag = formatTag;\r\n        this.avgBytesPerSec = avgBytesPerSec;\r\n        this.blockAlign = blockAlign;\r\n        this.priAudioFormatString = audioFormatString;\r\n        this.priRequestAudioFormatString = requestAudioFormatString;\r\n        this.priHasHeader = hasHeader;\r\n    }\r\n\r\n    public static fromSpeechSynthesisOutputFormat(speechSynthesisOutputFormat?: SpeechSynthesisOutputFormat): AudioOutputFormatImpl {\r\n        if (speechSynthesisOutputFormat === undefined) {\r\n            return AudioOutputFormatImpl.getDefaultOutputFormat();\r\n        }\r\n        return AudioOutputFormatImpl.fromSpeechSynthesisOutputFormatString(\r\n            AudioOutputFormatImpl.SpeechSynthesisOutputFormatToString[speechSynthesisOutputFormat]);\r\n    }\r\n\r\n    public static fromSpeechSynthesisOutputFormatString(speechSynthesisOutputFormatString: string): AudioOutputFormatImpl {\r\n        switch (speechSynthesisOutputFormatString) {\r\n            case \"raw-8khz-8bit-mono-mulaw\":\r\n                return new AudioOutputFormatImpl(\r\n                    AudioFormatTag.MuLaw,\r\n                    1,\r\n                    8000,\r\n                    8000,\r\n                    1,\r\n                    8,\r\n                    speechSynthesisOutputFormatString,\r\n                    speechSynthesisOutputFormatString,\r\n                    false);\r\n            case \"riff-16khz-16kbps-mono-siren\":\r\n                return new AudioOutputFormatImpl(\r\n                    AudioFormatTag.Siren,\r\n                    1,\r\n                    16000,\r\n                    2000,\r\n                    40,\r\n                    0,\r\n                    speechSynthesisOutputFormatString,\r\n                    \"audio-16khz-16kbps-mono-siren\",\r\n                    true);\r\n            case \"audio-16khz-16kbps-mono-siren\":\r\n                return new AudioOutputFormatImpl(\r\n                    AudioFormatTag.Siren,\r\n                    1,\r\n                    16000,\r\n                    2000,\r\n                    40,\r\n                    0,\r\n                    speechSynthesisOutputFormatString,\r\n                    speechSynthesisOutputFormatString,\r\n                    false);\r\n            case \"audio-16khz-32kbitrate-mono-mp3\":\r\n                return new AudioOutputFormatImpl(\r\n                    AudioFormatTag.MP3,\r\n                    1,\r\n                    16000,\r\n                    32 << 7,\r\n                    2,\r\n                    16,\r\n                    speechSynthesisOutputFormatString,\r\n                    speechSynthesisOutputFormatString,\r\n                    false);\r\n            case \"audio-16khz-128kbitrate-mono-mp3\":\r\n                return new AudioOutputFormatImpl(\r\n                    AudioFormatTag.MP3,\r\n                    1,\r\n                    16000,\r\n                    128 << 7,\r\n                    2,\r\n                    16,\r\n                    speechSynthesisOutputFormatString,\r\n                    speechSynthesisOutputFormatString,\r\n                    false);\r\n            case \"audio-16khz-64kbitrate-mono-mp3\":\r\n                return new AudioOutputFormatImpl(\r\n                    AudioFormatTag.MP3,\r\n                    1,\r\n                    16000,\r\n                    64 << 7,\r\n                    2,\r\n                    16,\r\n                    speechSynthesisOutputFormatString,\r\n                    speechSynthesisOutputFormatString,\r\n                    false);\r\n            case \"audio-24khz-48kbitrate-mono-mp3\":\r\n                return new AudioOutputFormatImpl(\r\n                    AudioFormatTag.MP3,\r\n                    1,\r\n                    24000,\r\n                    48 << 7,\r\n                    2,\r\n                    16,\r\n                    speechSynthesisOutputFormatString,\r\n                    speechSynthesisOutputFormatString,\r\n                    false);\r\n            case \"audio-24khz-96kbitrate-mono-mp3\":\r\n                return new AudioOutputFormatImpl(\r\n                    AudioFormatTag.MP3,\r\n                    1,\r\n                    24000,\r\n                    96 << 7,\r\n                    2,\r\n                    16,\r\n                    speechSynthesisOutputFormatString,\r\n                    speechSynthesisOutputFormatString,\r\n                    false);\r\n            case \"audio-24khz-160kbitrate-mono-mp3\":\r\n                return new AudioOutputFormatImpl(\r\n                    AudioFormatTag.MP3,\r\n                    1,\r\n                    24000,\r\n                    160 << 7,\r\n                    2,\r\n                    16,\r\n                    speechSynthesisOutputFormatString,\r\n                    speechSynthesisOutputFormatString,\r\n                    false);\r\n            case \"raw-16khz-16bit-mono-truesilk\":\r\n                return new AudioOutputFormatImpl(\r\n                    AudioFormatTag.SILKSkype,\r\n                    1,\r\n                    16000,\r\n                    32000,\r\n                    2,\r\n                    16,\r\n                    speechSynthesisOutputFormatString,\r\n                    speechSynthesisOutputFormatString,\r\n                    false);\r\n\r\n            case \"riff-8khz-16bit-mono-pcm\":\r\n                return new AudioOutputFormatImpl(\r\n                    AudioFormatTag.PCM,\r\n                    1,\r\n                    8000,\r\n                    16000,\r\n                    2,\r\n                    16,\r\n                    speechSynthesisOutputFormatString,\r\n                    \"raw-8khz-16bit-mono-pcm\",\r\n                    true);\r\n            case \"riff-24khz-16bit-mono-pcm\":\r\n                return new AudioOutputFormatImpl(\r\n                    AudioFormatTag.PCM,\r\n                    1,\r\n                    24000,\r\n                    48000,\r\n                    2,\r\n                    16,\r\n                    speechSynthesisOutputFormatString,\r\n                    \"raw-24khz-16bit-mono-pcm\",\r\n                    true);\r\n            case \"riff-8khz-8bit-mono-mulaw\":\r\n                return new AudioOutputFormatImpl(\r\n                    AudioFormatTag.MuLaw,\r\n                    1,\r\n                    8000,\r\n                    8000,\r\n                    1,\r\n                    8,\r\n                    speechSynthesisOutputFormatString,\r\n                    \"raw-8khz-8bit-mono-mulaw\",\r\n                    true);\r\n            case \"raw-16khz-16bit-mono-pcm\":\r\n                return new AudioOutputFormatImpl(\r\n                    AudioFormatTag.PCM,\r\n                    1,\r\n                    16000,\r\n                    32000,\r\n                    2,\r\n                    16,\r\n                    speechSynthesisOutputFormatString,\r\n                    \"raw-16khz-16bit-mono-pcm\",\r\n                    false);\r\n            case \"raw-24khz-16bit-mono-pcm\":\r\n                return new AudioOutputFormatImpl(\r\n                    AudioFormatTag.PCM,\r\n                    1,\r\n                    24000,\r\n                    48000,\r\n                    2,\r\n                    16,\r\n                    speechSynthesisOutputFormatString,\r\n                    \"raw-24khz-16bit-mono-pcm\",\r\n                    false);\r\n            case \"raw-8khz-16bit-mono-pcm\":\r\n                return new AudioOutputFormatImpl(\r\n                    AudioFormatTag.PCM,\r\n                    1,\r\n                    8000,\r\n                    16000,\r\n                    2,\r\n                    16,\r\n                    speechSynthesisOutputFormatString,\r\n                    \"raw-8khz-16bit-mono-pcm\",\r\n                    false);\r\n            case \"ogg-16khz-16bit-mono-opus\":\r\n                return new AudioOutputFormatImpl(\r\n                    AudioFormatTag.OGG_OPUS,\r\n                    1,\r\n                    16000,\r\n                    8192,\r\n                    2,\r\n                    16,\r\n                    speechSynthesisOutputFormatString,\r\n                    speechSynthesisOutputFormatString,\r\n                    false);\r\n            case \"ogg-24khz-16bit-mono-opus\":\r\n                return new AudioOutputFormatImpl(\r\n                    AudioFormatTag.OGG_OPUS,\r\n                    1,\r\n                    24000,\r\n                    8192,\r\n                    2,\r\n                    16,\r\n                    speechSynthesisOutputFormatString,\r\n                    speechSynthesisOutputFormatString,\r\n                    false);\r\n            case \"raw-48khz-16bit-mono-pcm\":\r\n                return new AudioOutputFormatImpl(\r\n                    AudioFormatTag.PCM,\r\n                    1,\r\n                    48000,\r\n                    96000,\r\n                    2,\r\n                    16,\r\n                    speechSynthesisOutputFormatString,\r\n                    \"raw-48khz-16bit-mono-pcm\",\r\n                    false);\r\n            case \"riff-48khz-16bit-mono-pcm\":\r\n                return new AudioOutputFormatImpl(\r\n                    AudioFormatTag.PCM,\r\n                    1,\r\n                    48000,\r\n                    96000,\r\n                    2,\r\n                    16,\r\n                    speechSynthesisOutputFormatString,\r\n                    \"raw-48khz-16bit-mono-pcm\",\r\n                    true);\r\n            case \"audio-48khz-96kbitrate-mono-mp3\":\r\n                return new AudioOutputFormatImpl(\r\n                    AudioFormatTag.MP3,\r\n                    1,\r\n                    48000,\r\n                    96 << 7,\r\n                    2,\r\n                    16,\r\n                    speechSynthesisOutputFormatString,\r\n                    speechSynthesisOutputFormatString,\r\n                    false);\r\n            case \"audio-48khz-192kbitrate-mono-mp3\":\r\n                return new AudioOutputFormatImpl(\r\n                    AudioFormatTag.MP3,\r\n                    1,\r\n                    48000,\r\n                    192 << 7,\r\n                    2,\r\n                    16,\r\n                    speechSynthesisOutputFormatString,\r\n                    speechSynthesisOutputFormatString,\r\n                    false);\r\n            case \"ogg-48khz-16bit-mono-opus\":\r\n                return new AudioOutputFormatImpl(\r\n                    AudioFormatTag.OGG_OPUS,\r\n                    1,\r\n                    48000,\r\n                    12000,\r\n                    2,\r\n                    16,\r\n                    speechSynthesisOutputFormatString,\r\n                    speechSynthesisOutputFormatString,\r\n                    false);\r\n            case \"webm-16khz-16bit-mono-opus\":\r\n                return new AudioOutputFormatImpl(\r\n                    AudioFormatTag.WEBM_OPUS,\r\n                    1,\r\n                    16000,\r\n                    4000,\r\n                    2,\r\n                    16,\r\n                    speechSynthesisOutputFormatString,\r\n                    speechSynthesisOutputFormatString,\r\n                    false);\r\n            case \"webm-24khz-16bit-mono-opus\":\r\n                return new AudioOutputFormatImpl(\r\n                    AudioFormatTag.WEBM_OPUS,\r\n                    1,\r\n                    24000,\r\n                    6000,\r\n                    2,\r\n                    16,\r\n                    speechSynthesisOutputFormatString,\r\n                    speechSynthesisOutputFormatString,\r\n                    false);\r\n            case \"webm-24khz-16bit-24kbps-mono-opus\":\r\n                return new AudioOutputFormatImpl(\r\n                    AudioFormatTag.WEBM_OPUS,\r\n                    1,\r\n                    24000,\r\n                    3000,\r\n                    2,\r\n                    16,\r\n                    speechSynthesisOutputFormatString,\r\n                    speechSynthesisOutputFormatString,\r\n                    false);\r\n            case \"audio-16khz-16bit-32kbps-mono-opus\":\r\n                return new AudioOutputFormatImpl(\r\n                    AudioFormatTag.OPUS,\r\n                    1,\r\n                    16000,\r\n                    4000,\r\n                    2,\r\n                    16,\r\n                    speechSynthesisOutputFormatString,\r\n                    speechSynthesisOutputFormatString,\r\n                    false);\r\n            case \"audio-24khz-16bit-48kbps-mono-opus\":\r\n                return new AudioOutputFormatImpl(\r\n                    AudioFormatTag.OPUS,\r\n                    1,\r\n                    24000,\r\n                    6000,\r\n                    2,\r\n                    16,\r\n                    speechSynthesisOutputFormatString,\r\n                    speechSynthesisOutputFormatString,\r\n                    false);\r\n            case \"audio-24khz-16bit-24kbps-mono-opus\":\r\n                return new AudioOutputFormatImpl(\r\n                    AudioFormatTag.OPUS,\r\n                    1,\r\n                    24000,\r\n                    3000,\r\n                    2,\r\n                    16,\r\n                    speechSynthesisOutputFormatString,\r\n                    speechSynthesisOutputFormatString,\r\n                    false);\r\n            case \"audio-24khz-16bit-mono-flac\":\r\n                return new AudioOutputFormatImpl(\r\n                    AudioFormatTag.FLAC,\r\n                    1,\r\n                    24000,\r\n                    24000,\r\n                    2,\r\n                    16,\r\n                    speechSynthesisOutputFormatString,\r\n                    speechSynthesisOutputFormatString,\r\n                    false);\r\n            case \"audio-48khz-16bit-mono-flac\":\r\n                return new AudioOutputFormatImpl(\r\n                    AudioFormatTag.FLAC,\r\n                    1,\r\n                    48000,\r\n                    30000,\r\n                    2,\r\n                    16,\r\n                    speechSynthesisOutputFormatString,\r\n                    speechSynthesisOutputFormatString,\r\n                    false);\r\n            case \"raw-24khz-16bit-mono-truesilk\":\r\n                return new AudioOutputFormatImpl(\r\n                    AudioFormatTag.SILKSkype,\r\n                    1,\r\n                    24000,\r\n                    48000,\r\n                    2,\r\n                    16,\r\n                    speechSynthesisOutputFormatString,\r\n                    speechSynthesisOutputFormatString,\r\n                    false);\r\n            case \"raw-8khz-8bit-mono-alaw\":\r\n                return new AudioOutputFormatImpl(\r\n                    AudioFormatTag.ALaw,\r\n                    1,\r\n                    8000,\r\n                    8000,\r\n                    1,\r\n                    8,\r\n                    speechSynthesisOutputFormatString,\r\n                    speechSynthesisOutputFormatString,\r\n                    false);\r\n            case \"riff-8khz-8bit-mono-alaw\":\r\n                return new AudioOutputFormatImpl(\r\n                    AudioFormatTag.ALaw,\r\n                    1,\r\n                    8000,\r\n                    8000,\r\n                    1,\r\n                    8,\r\n                    speechSynthesisOutputFormatString,\r\n                    \"raw-8khz-8bit-mono-alaw\",\r\n                    true);\r\n            case \"raw-22050hz-16bit-mono-pcm\":\r\n                return new AudioOutputFormatImpl(\r\n                    AudioFormatTag.PCM,\r\n                    1,\r\n                    22050,\r\n                    44100,\r\n                    2,\r\n                    16,\r\n                    speechSynthesisOutputFormatString,\r\n                    speechSynthesisOutputFormatString,\r\n                    false);\r\n            case \"riff-22050hz-16bit-mono-pcm\":\r\n                return new AudioOutputFormatImpl(\r\n                    AudioFormatTag.PCM,\r\n                    1,\r\n                    22050,\r\n                    44100,\r\n                    2,\r\n                    16,\r\n                    speechSynthesisOutputFormatString,\r\n                    \"raw-22050hz-16bit-mono-pcm\",\r\n                    true);\r\n            case \"raw-44100hz-16bit-mono-pcm\":\r\n                return new AudioOutputFormatImpl(\r\n                    AudioFormatTag.PCM,\r\n                    1,\r\n                    44100,\r\n                    88200,\r\n                    2,\r\n                    16,\r\n                    speechSynthesisOutputFormatString,\r\n                    speechSynthesisOutputFormatString,\r\n                    false);\r\n            case \"riff-44100hz-16bit-mono-pcm\":\r\n                return new AudioOutputFormatImpl(\r\n                    AudioFormatTag.PCM,\r\n                    1,\r\n                    44100,\r\n                    88200,\r\n                    2,\r\n                    16,\r\n                    speechSynthesisOutputFormatString,\r\n                    \"raw-44100hz-16bit-mono-pcm\",\r\n                    true);\r\n            case \"amr-wb-16000h\":\r\n                return new AudioOutputFormatImpl(\r\n                    AudioFormatTag.AMR_WB,\r\n                    1,\r\n                    16000,\r\n                    3052,\r\n                    2,\r\n                    16,\r\n                    speechSynthesisOutputFormatString,\r\n                    speechSynthesisOutputFormatString,\r\n                    false);\r\n            case \"g722-16khz-64kbps\":\r\n                return new AudioOutputFormatImpl(\r\n                    AudioFormatTag.G722,\r\n                    1,\r\n                    16000,\r\n                    8000,\r\n                    2,\r\n                    16,\r\n                    speechSynthesisOutputFormatString,\r\n                    speechSynthesisOutputFormatString,\r\n                    false);\r\n            case \"riff-16khz-16bit-mono-pcm\":\r\n            default:\r\n                return new AudioOutputFormatImpl(\r\n                    AudioFormatTag.PCM,\r\n                    1,\r\n                    16000,\r\n                    32000,\r\n                    2,\r\n                    16,\r\n                    \"riff-16khz-16bit-mono-pcm\",\r\n                    \"raw-16khz-16bit-mono-pcm\",\r\n                    true);\r\n        }\r\n    }\r\n\r\n    public static getDefaultOutputFormat(): AudioOutputFormatImpl {\r\n        return AudioOutputFormatImpl.fromSpeechSynthesisOutputFormatString(\r\n            (typeof window !== \"undefined\") ? \"audio-24khz-48kbitrate-mono-mp3\" : \"riff-16khz-16bit-mono-pcm\");\r\n    }\r\n\r\n    /**\r\n     * The format tag of the audio\r\n     * @AudioFormatTag AudioOutputFormatImpl.prototype.formatTag\r\n     * @function\r\n     * @public\r\n     */\r\n    public formatTag: AudioFormatTag;\r\n\r\n    /**\r\n     * Specifies if this audio output format has a header\r\n     * @boolean AudioOutputFormatImpl.prototype.hasHeader\r\n     * @function\r\n     * @public\r\n     */\r\n    public get hasHeader(): boolean {\r\n        return this.priHasHeader;\r\n    }\r\n\r\n    /**\r\n     * Specifies the header of this format\r\n     * @ArrayBuffer AudioOutputFormatImpl.prototype.header\r\n     * @function\r\n     * @public\r\n     */\r\n    public get header(): ArrayBuffer {\r\n        if (this.hasHeader) {\r\n            return this.privHeader;\r\n        }\r\n        return undefined;\r\n    }\r\n\r\n    /**\r\n     * Updates the header based on the audio length\r\n     * @member AudioOutputFormatImpl.updateHeader\r\n     * @function\r\n     * @public\r\n     * @param {number} audioLength - the audio length\r\n     */\r\n    public updateHeader(audioLength: number): void {\r\n        if (this.priHasHeader) {\r\n            const view = new DataView(this.privHeader);\r\n            view.setUint32(4, audioLength + this.privHeader.byteLength - 8, true);\r\n            view.setUint32(40, audioLength, true);\r\n        }\r\n    }\r\n\r\n    /**\r\n     * Specifies the audio format string to be sent to the service\r\n     * @string AudioOutputFormatImpl.prototype.requestAudioFormatString\r\n     * @function\r\n     * @public\r\n     */\r\n    public get requestAudioFormatString(): string {\r\n        return this.priRequestAudioFormatString;\r\n    }\r\n\r\n    /**\r\n     * Adds audio header\r\n     * @param audio the raw audio without header\r\n     * @returns the audio with header if applicable\r\n     */\r\n\r\n    public addHeader(audio: ArrayBuffer): ArrayBuffer {\r\n        if (!this.hasHeader) {\r\n            return audio;\r\n        }\r\n        this.updateHeader(audio.byteLength);\r\n        const tmp = new Uint8Array(audio.byteLength + this.header.byteLength);\r\n        tmp.set(new Uint8Array(this.header), 0);\r\n        tmp.set(new Uint8Array(audio), this.header.byteLength);\r\n        return tmp.buffer;\r\n    }\r\n\r\n}\r\n"]}