@voice-ping/cognitive-services-speech
Version:
VoicePing Cognitive Services Speech SDK for JavaScript forked from Microsoft
1 lines • 15.6 kB
Source Map (JSON)
{"version":3,"sources":["src/sdk/Audio/AudioOutputFormat.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AACzD,OAAO,EAAE,2BAA2B,EAAE,MAAM,gCAAgC,CAAC;AAC7E,OAAO,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AAE5D,oBAAY,cAAc;IACtB,GAAG,IAAI;IACP,KAAK,IAAA;IACL,KAAK,IAAA;IACL,GAAG,IAAA;IACH,SAAS,IAAA;IACT,IAAI,IAAA;CACP;AAED;;;;GAIG;AAEH,qBAAa,qBAAsB,SAAQ,qBAAqB;IAC5D,OAAc,mCAAmC,EAAE,iBAAiB,CAAC,MAAM,CAAC,CAoB1E;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;WAwNvG,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;IAO9C;;;;;OAKG;IACH,IAAW,wBAAwB,IAAI,MAAM,CAE5C;CAEJ","file":"AudioOutputFormat.d.ts","sourcesContent":["// Copyright (c) Microsoft Corporation. All rights reserved.\n// Licensed under the MIT license.\n\nimport { INumberDictionary } from \"../../common/Exports\";\nimport { SpeechSynthesisOutputFormat } from \"../SpeechSynthesisOutputFormat\";\nimport { AudioStreamFormatImpl } from \"./AudioStreamFormat\";\n\nexport enum AudioFormatTag {\n PCM = 1,\n MuLaw,\n Siren,\n MP3,\n SILKSkype,\n Opus,\n}\n\n/**\n * @private\n * @class AudioOutputFormatImpl\n * Added in version 1.11.0\n */\n// tslint:disable-next-line:max-classes-per-file\nexport class AudioOutputFormatImpl extends AudioStreamFormatImpl {\n public static SpeechSynthesisOutputFormatToString: INumberDictionary<string> = {\n [SpeechSynthesisOutputFormat.Raw8Khz8BitMonoMULaw]: \"raw-8khz-8bit-mono-mulaw\",\n [SpeechSynthesisOutputFormat.Riff16Khz16KbpsMonoSiren]: \"riff-16khz-16kbps-mono-siren\",\n [SpeechSynthesisOutputFormat.Audio16Khz16KbpsMonoSiren]: \"audio-16khz-16kbps-mono-siren\",\n [SpeechSynthesisOutputFormat.Audio16Khz32KBitRateMonoMp3]: \"audio-16khz-32kbitrate-mono-mp3\",\n [SpeechSynthesisOutputFormat.Audio16Khz128KBitRateMonoMp3]: \"audio-16khz-128kbitrate-mono-mp3\",\n [SpeechSynthesisOutputFormat.Audio16Khz64KBitRateMonoMp3]: \"audio-16khz-64kbitrate-mono-mp3\",\n [SpeechSynthesisOutputFormat.Audio24Khz48KBitRateMonoMp3]: \"audio-24khz-48kbitrate-mono-mp3\",\n [SpeechSynthesisOutputFormat.Audio24Khz96KBitRateMonoMp3]: \"audio-24khz-96kbitrate-mono-mp3\",\n [SpeechSynthesisOutputFormat.Audio24Khz160KBitRateMonoMp3]: \"audio-24khz-160kbitrate-mono-mp3\",\n [SpeechSynthesisOutputFormat.Raw16Khz16BitMonoTrueSilk]: \"raw-16khz-16bit-mono-truesilk\",\n [SpeechSynthesisOutputFormat.Riff16Khz16BitMonoPcm]: \"riff-16khz-16bit-mono-pcm\",\n [SpeechSynthesisOutputFormat.Riff8Khz16BitMonoPcm]: \"riff-8khz-16bit-mono-pcm\",\n [SpeechSynthesisOutputFormat.Riff24Khz16BitMonoPcm]: \"riff-24khz-16bit-mono-pcm\",\n [SpeechSynthesisOutputFormat.Riff8Khz8BitMonoMULaw]: \"riff-8khz-8bit-mono-mulaw\",\n [SpeechSynthesisOutputFormat.Raw16Khz16BitMonoPcm]: \"raw-16khz-16bit-mono-pcm\",\n [SpeechSynthesisOutputFormat.Raw24Khz16BitMonoPcm]: \"raw-24khz-16bit-mono-pcm\",\n [SpeechSynthesisOutputFormat.Raw8Khz16BitMonoPcm]: \"raw-8khz-16bit-mono-pcm\",\n [SpeechSynthesisOutputFormat.Ogg16Khz16BitMonoOpus]: \"ogg-16khz-16bit-mono-opus\",\n [SpeechSynthesisOutputFormat.Ogg24Khz16BitMonoOpus]: \"ogg-24khz-16bit-mono-opus\",\n };\n private priAudioFormatString: string;\n /**\n * audio format string for synthesis request, which may differ from priAudioFormatString.\n * e.g. for riff format, we will request raw format and add a header in SDK side.\n */\n private readonly priRequestAudioFormatString: string;\n private readonly priHasHeader: boolean;\n\n /**\n * Creates an instance with the given values.\n * @constructor\n * @param formatTag\n * @param {number} samplesPerSec - Samples per second.\n * @param {number} bitsPerSample - Bits per sample.\n * @param {number} channels - Number of channels.\n * @param avgBytesPerSec\n * @param blockAlign\n * @param audioFormatString\n * @param requestAudioFormatString\n * @param hasHeader\n */\n public constructor(formatTag: AudioFormatTag,\n channels: number,\n samplesPerSec: number,\n avgBytesPerSec: number,\n blockAlign: number,\n bitsPerSample: number,\n audioFormatString: string,\n requestAudioFormatString: string,\n hasHeader: boolean) {\n super(samplesPerSec, bitsPerSample, channels);\n this.formatTag = formatTag;\n this.avgBytesPerSec = avgBytesPerSec;\n this.blockAlign = blockAlign;\n this.priAudioFormatString = audioFormatString;\n this.priRequestAudioFormatString = requestAudioFormatString;\n this.priHasHeader = hasHeader;\n }\n\n public static fromSpeechSynthesisOutputFormat(speechSynthesisOutputFormat?: SpeechSynthesisOutputFormat): AudioOutputFormatImpl {\n if (speechSynthesisOutputFormat === undefined) {\n return AudioOutputFormatImpl.getDefaultOutputFormat();\n }\n return AudioOutputFormatImpl.fromSpeechSynthesisOutputFormatString(\n AudioOutputFormatImpl.SpeechSynthesisOutputFormatToString[speechSynthesisOutputFormat]);\n }\n\n public static fromSpeechSynthesisOutputFormatString(speechSynthesisOutputFormatString: string): AudioOutputFormatImpl {\n switch (speechSynthesisOutputFormatString) {\n case \"raw-8khz-8bit-mono-mulaw\":\n return new AudioOutputFormatImpl(\n AudioFormatTag.PCM,\n 1,\n 8000,\n 8000,\n 1,\n 8,\n speechSynthesisOutputFormatString,\n speechSynthesisOutputFormatString,\n false);\n case \"riff-16khz-16kbps-mono-siren\":\n return new AudioOutputFormatImpl(\n AudioFormatTag.Siren,\n 1,\n 16000,\n 2000,\n 40,\n 0,\n speechSynthesisOutputFormatString,\n \"audio-16khz-16kbps-mono-siren\",\n true);\n case \"audio-16khz-16kbps-mono-siren\":\n return new AudioOutputFormatImpl(\n AudioFormatTag.Siren,\n 1,\n 16000,\n 2000,\n 40,\n 0,\n speechSynthesisOutputFormatString,\n speechSynthesisOutputFormatString,\n false);\n case \"audio-16khz-32kbitrate-mono-mp3\":\n return new AudioOutputFormatImpl(\n AudioFormatTag.MP3,\n 1,\n 16000,\n 32 << 7,\n 2,\n 16,\n speechSynthesisOutputFormatString,\n speechSynthesisOutputFormatString,\n false);\n case \"audio-16khz-128kbitrate-mono-mp3\":\n return new AudioOutputFormatImpl(\n AudioFormatTag.MP3,\n 1,\n 16000,\n 128 << 7,\n 2,\n 16,\n speechSynthesisOutputFormatString,\n speechSynthesisOutputFormatString,\n false);\n case \"audio-16khz-64kbitrate-mono-mp3\":\n return new AudioOutputFormatImpl(\n AudioFormatTag.MP3,\n 1,\n 16000,\n 64 << 7,\n 2,\n 16,\n speechSynthesisOutputFormatString,\n speechSynthesisOutputFormatString,\n false);\n case \"audio-24khz-48kbitrate-mono-mp3\":\n return new AudioOutputFormatImpl(\n AudioFormatTag.MP3,\n 1,\n 16000,\n 48 << 7,\n 2,\n 16,\n speechSynthesisOutputFormatString,\n speechSynthesisOutputFormatString,\n false);\n case \"audio-24khz-96kbitrate-mono-mp3\":\n return new AudioOutputFormatImpl(\n AudioFormatTag.MP3,\n 1,\n 16000,\n 96 << 7,\n 2,\n 16,\n speechSynthesisOutputFormatString,\n speechSynthesisOutputFormatString,\n false);\n case \"audio-24khz-160kbitrate-mono-mp3\":\n return new AudioOutputFormatImpl(\n AudioFormatTag.MP3,\n 1,\n 16000,\n 160 << 7,\n 2,\n 16,\n speechSynthesisOutputFormatString,\n speechSynthesisOutputFormatString,\n false);\n case \"raw-16khz-16bit-mono-truesilk\":\n return new AudioOutputFormatImpl(\n AudioFormatTag.SILKSkype,\n 1,\n 16000,\n 32000,\n 2,\n 16,\n speechSynthesisOutputFormatString,\n speechSynthesisOutputFormatString,\n false);\n\n case \"riff-8khz-16bit-mono-pcm\":\n return new AudioOutputFormatImpl(\n AudioFormatTag.PCM,\n 1,\n 8000,\n 16000,\n 2,\n 16,\n speechSynthesisOutputFormatString,\n \"raw-8khz-16bit-mono-pcm\",\n true);\n case \"riff-24khz-16bit-mono-pcm\":\n return new AudioOutputFormatImpl(\n AudioFormatTag.PCM,\n 1,\n 24000,\n 48000,\n 2,\n 16,\n speechSynthesisOutputFormatString,\n \"raw-24khz-16bit-mono-pcm\",\n true);\n case \"riff-8khz-8bit-mono-mulaw\":\n return new AudioOutputFormatImpl(\n AudioFormatTag.MuLaw,\n 1,\n 8000,\n 8000,\n 1,\n 8,\n speechSynthesisOutputFormatString,\n \"raw-8khz-8bit-mono-mulaw\",\n true);\n case \"raw-16khz-16bit-mono-pcm\":\n return new AudioOutputFormatImpl(\n AudioFormatTag.PCM,\n 1,\n 16000,\n 32000,\n 2,\n 16,\n speechSynthesisOutputFormatString,\n \"raw-16khz-16bit-mono-pcm\",\n false);\n case \"raw-24khz-16bit-mono-pcm\":\n return new AudioOutputFormatImpl(\n AudioFormatTag.PCM,\n 1,\n 24000,\n 48000,\n 2,\n 16,\n speechSynthesisOutputFormatString,\n \"raw-24khz-16bit-mono-pcm\",\n false);\n case \"raw-8khz-16bit-mono-pcm\":\n return new AudioOutputFormatImpl(\n AudioFormatTag.PCM,\n 1,\n 8000,\n 16000,\n 2,\n 16,\n speechSynthesisOutputFormatString,\n \"raw-8khz-16bit-mono-pcm\",\n false);\n case \"ogg-16khz-16bit-mono-opus\":\n return new AudioOutputFormatImpl(\n AudioFormatTag.Opus,\n 1,\n 16000,\n 8192,\n 2,\n 16,\n speechSynthesisOutputFormatString,\n \"ogg-16khz-16bit-mono-opus\",\n false);\n case \"ogg-24khz-16bit-mono-opus\":\n return new AudioOutputFormatImpl(\n AudioFormatTag.Opus,\n 1,\n 24000,\n 8192,\n 2,\n 16,\n speechSynthesisOutputFormatString,\n \"ogg-24khz-16bit-mono-opus\",\n false);\n case \"riff-16khz-16bit-mono-pcm\":\n default:\n return new AudioOutputFormatImpl(\n AudioFormatTag.PCM,\n 1,\n 16000,\n 32000,\n 2,\n 16,\n \"riff-16khz-16bit-mono-pcm\",\n \"raw-16khz-16bit-mono-pcm\",\n true);\n }\n }\n\n public static getDefaultOutputFormat(): AudioOutputFormatImpl {\n return AudioOutputFormatImpl.fromSpeechSynthesisOutputFormatString(\n (typeof window !== \"undefined\") ? \"audio-24khz-48kbitrate-mono-mp3\" : \"riff-16khz-16bit-mono-pcm\");\n }\n\n /**\n * The format tag of the audio\n * @AudioFormatTag AudioOutputFormatImpl.prototype.formatTag\n * @function\n * @public\n */\n public formatTag: AudioFormatTag;\n\n /**\n * Specifies if this audio output format has a header\n * @boolean AudioOutputFormatImpl.prototype.hasHeader\n * @function\n * @public\n */\n public get hasHeader(): boolean {\n return this.priHasHeader;\n }\n\n /**\n * Specifies the header of this format\n * @ArrayBuffer AudioOutputFormatImpl.prototype.header\n * @function\n * @public\n */\n public get header(): ArrayBuffer {\n if (this.hasHeader) {\n return this.privHeader;\n }\n return undefined;\n }\n\n /**\n * Updates the header based on the audio length\n * @member AudioOutputFormatImpl.updateHeader\n * @function\n * @public\n * @param {number} audioLength - the audio length\n */\n public updateHeader(audioLength: number): void {\n if (this.priHasHeader) {\n const view = new DataView(this.privHeader);\n view.setUint32(40, audioLength, true);\n }\n }\n\n /**\n * Specifies the audio format string to be sent to the service\n * @string AudioOutputFormatImpl.prototype.requestAudioFormatString\n * @function\n * @public\n */\n public get requestAudioFormatString(): string {\n return this.priRequestAudioFormatString;\n }\n\n}\n"]}