@voice-ping/cognitive-services-speech
Version:
VoicePing Cognitive Services Speech SDK for JavaScript forked from Microsoft
326 lines (324 loc) • 12.1 kB
JavaScript
;
// Copyright (c) Microsoft Corporation. All rights reserved.
// Licensed under the MIT license.
var __extends = (this && this.__extends) || (function () {
var extendStatics = function (d, b) {
extendStatics = Object.setPrototypeOf ||
({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
return extendStatics(d, b);
};
return function (d, b) {
extendStatics(d, b);
function __() { this.constructor = d; }
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
};
})();
Object.defineProperty(exports, "__esModule", { value: true });
var Exports_1 = require("../../common.browser/Exports");
var Contracts_1 = require("../Contracts");
var Exports_2 = require("../Exports");
var AudioFileWriter_1 = require("./AudioFileWriter");
var AudioInputStream_1 = require("./AudioInputStream");
var AudioOutputStream_1 = require("./AudioOutputStream");
/**
* Represents audio input configuration used for specifying what type of input to use (microphone, file, stream).
* @class AudioConfig
* Updated in version 1.11.0
*/
var AudioConfig = /** @class */ (function () {
function AudioConfig() {
}
/**
* Creates an AudioConfig object representing the default microphone on the system.
* @member AudioConfig.fromDefaultMicrophoneInput
* @function
* @public
* @returns {AudioConfig} The audio input configuration being created.
*/
AudioConfig.fromDefaultMicrophoneInput = function () {
var pcmRecorder = new Exports_1.PcmRecorder();
return new AudioConfigImpl(new Exports_1.MicAudioSource(pcmRecorder));
};
/**
* Creates an AudioConfig object representing a microphone with the specified device ID.
* @member AudioConfig.fromMicrophoneInput
* @function
* @public
* @param {string | undefined} deviceId - Specifies the device ID of the microphone to be used.
* Default microphone is used the value is omitted.
* @returns {AudioConfig} The audio input configuration being created.
*/
AudioConfig.fromMicrophoneInput = function (deviceId) {
var pcmRecorder = new Exports_1.PcmRecorder();
return new AudioConfigImpl(new Exports_1.MicAudioSource(pcmRecorder, deviceId));
};
/**
* Creates an AudioConfig object representing the specified file.
* @member AudioConfig.fromWavFileInput
* @function
* @public
* @param {File} fileName - Specifies the audio input file. Currently, only WAV / PCM is supported.
* @returns {AudioConfig} The audio input configuration being created.
*/
AudioConfig.fromWavFileInput = function (file) {
return new AudioConfigImpl(new Exports_1.FileAudioSource(file));
};
/**
* Creates an AudioConfig object representing the specified stream.
* @member AudioConfig.fromStreamInput
* @function
* @public
* @param {AudioInputStream | PullAudioInputStreamCallback} audioStream - Specifies the custom audio input
* stream. Currently, only WAV / PCM is supported.
* @returns {AudioConfig} The audio input configuration being created.
*/
AudioConfig.fromStreamInput = function (audioStream) {
if (audioStream instanceof Exports_2.PullAudioInputStreamCallback) {
return new AudioConfigImpl(new AudioInputStream_1.PullAudioInputStreamImpl(audioStream));
}
if (audioStream instanceof Exports_2.AudioInputStream) {
return new AudioConfigImpl(audioStream);
}
throw new Error("Not Supported Type");
};
/**
* Creates an AudioConfig object representing the default speaker.
* @member AudioConfig.fromDefaultSpeakerOutput
* @function
* @public
* @returns {AudioConfig} The audio output configuration being created.
* Added in version 1.11.0
*/
AudioConfig.fromDefaultSpeakerOutput = function () {
return new AudioOutputConfigImpl(new Exports_2.SpeakerAudioDestination());
};
/**
* Creates an AudioConfig object representing the custom IPlayer object.
* You can use the IPlayer object to control pause, resume, etc.
* @member AudioConfig.fromSpeakerOutput
* @function
* @public
* @param {IPlayer} player - the IPlayer object for playback.
* @returns {AudioConfig} The audio output configuration being created.
* Added in version 1.12.0
*/
AudioConfig.fromSpeakerOutput = function (player) {
if (player === undefined) {
return AudioConfig.fromDefaultSpeakerOutput();
}
if (player instanceof Exports_2.SpeakerAudioDestination) {
return new AudioOutputConfigImpl(player);
}
throw new Error("Not Supported Type");
};
/**
* Creates an AudioConfig object representing a specified output audio file
* @member AudioConfig.fromAudioFileOutput
* @function
* @public
* @param {PathLike} filename - the filename of the output audio file
* @returns {AudioConfig} The audio output configuration being created.
* Added in version 1.11.0
*/
AudioConfig.fromAudioFileOutput = function (filename) {
return new AudioOutputConfigImpl(new AudioFileWriter_1.AudioFileWriter(filename));
};
/**
* Creates an AudioConfig object representing a specified audio output stream
* @member AudioConfig.fromStreamOutput
* @function
* @public
* @param {AudioOutputStream | PushAudioOutputStreamCallback} audioStream - Specifies the custom audio output
* stream.
* @returns {AudioConfig} The audio output configuration being created.
* Added in version 1.11.0
*/
AudioConfig.fromStreamOutput = function (audioStream) {
if (audioStream instanceof Exports_2.PushAudioOutputStreamCallback) {
return new AudioOutputConfigImpl(new AudioOutputStream_1.PushAudioOutputStreamImpl(audioStream));
}
if (audioStream instanceof Exports_2.PushAudioOutputStream) {
return new AudioOutputConfigImpl(audioStream);
}
if (audioStream instanceof Exports_2.PullAudioOutputStream) {
return new AudioOutputConfigImpl(audioStream);
}
throw new Error("Not Supported Type");
};
return AudioConfig;
}());
exports.AudioConfig = AudioConfig;
/**
* Represents audio input stream used for custom audio input configurations.
* @private
* @class AudioConfigImpl
*/
// tslint:disable-next-line:max-classes-per-file
var AudioConfigImpl = /** @class */ (function (_super) {
__extends(AudioConfigImpl, _super);
/**
* Creates and initializes an instance of this class.
* @constructor
* @param {IAudioSource} source - An audio source.
*/
function AudioConfigImpl(source) {
var _this = _super.call(this) || this;
_this.privSource = source;
return _this;
}
Object.defineProperty(AudioConfigImpl.prototype, "format", {
/**
* Format information for the audio
*/
get: function () {
return this.privSource.format;
},
enumerable: true,
configurable: true
});
/**
* @member AudioConfigImpl.prototype.close
* @function
* @public
*/
AudioConfigImpl.prototype.close = function () {
this.privSource.turnOff();
};
/**
* @member AudioConfigImpl.prototype.id
* @function
* @public
*/
AudioConfigImpl.prototype.id = function () {
return this.privSource.id();
};
Object.defineProperty(AudioConfigImpl.prototype, "blob", {
/**
* @member AudioConfigImpl.prototype.blob
* @function
* @public
*/
get: function () {
return this.privSource.blob;
},
enumerable: true,
configurable: true
});
/**
* @member AudioConfigImpl.prototype.turnOn
* @function
* @public
* @returns {Promise<boolean>} A promise.
*/
AudioConfigImpl.prototype.turnOn = function () {
return this.privSource.turnOn();
};
/**
* @member AudioConfigImpl.prototype.attach
* @function
* @public
* @param {string} audioNodeId - The audio node id.
* @returns {Promise<IAudioStreamNode>} A promise.
*/
AudioConfigImpl.prototype.attach = function (audioNodeId) {
return this.privSource.attach(audioNodeId);
};
/**
* @member AudioConfigImpl.prototype.detach
* @function
* @public
* @param {string} audioNodeId - The audio node id.
*/
AudioConfigImpl.prototype.detach = function (audioNodeId) {
return this.privSource.detach(audioNodeId);
};
/**
* @member AudioConfigImpl.prototype.turnOff
* @function
* @public
* @returns {Promise<boolean>} A promise.
*/
AudioConfigImpl.prototype.turnOff = function () {
return this.privSource.turnOff();
};
Object.defineProperty(AudioConfigImpl.prototype, "events", {
/**
* @member AudioConfigImpl.prototype.events
* @function
* @public
* @returns {EventSource<AudioSourceEvent>} An event source for audio events.
*/
get: function () {
return this.privSource.events;
},
enumerable: true,
configurable: true
});
AudioConfigImpl.prototype.setProperty = function (name, value) {
Contracts_1.Contracts.throwIfNull(value, "value");
if (undefined !== this.privSource.setProperty) {
this.privSource.setProperty(name, value);
}
else {
throw new Error("This AudioConfig instance does not support setting properties.");
}
};
AudioConfigImpl.prototype.getProperty = function (name, def) {
if (undefined !== this.privSource.getProperty) {
return this.privSource.getProperty(name, def);
}
else {
throw new Error("This AudioConfig instance does not support getting properties.");
}
return def;
};
Object.defineProperty(AudioConfigImpl.prototype, "deviceInfo", {
get: function () {
return this.privSource.deviceInfo;
},
enumerable: true,
configurable: true
});
return AudioConfigImpl;
}(AudioConfig));
exports.AudioConfigImpl = AudioConfigImpl;
// tslint:disable-next-line:max-classes-per-file
var AudioOutputConfigImpl = /** @class */ (function (_super) {
__extends(AudioOutputConfigImpl, _super);
/**
* Creates and initializes an instance of this class.
* @constructor
* @param {IAudioDestination} destination - An audio destination.
*/
function AudioOutputConfigImpl(destination) {
var _this = _super.call(this) || this;
_this.privDestination = destination;
return _this;
}
Object.defineProperty(AudioOutputConfigImpl.prototype, "format", {
set: function (format) {
this.privDestination.format = format;
},
enumerable: true,
configurable: true
});
AudioOutputConfigImpl.prototype.write = function (buffer) {
this.privDestination.write(buffer);
};
AudioOutputConfigImpl.prototype.close = function () {
this.privDestination.close();
};
AudioOutputConfigImpl.prototype.id = function () {
return this.privDestination.id();
};
AudioOutputConfigImpl.prototype.setProperty = function (name, value) {
throw new Error("This AudioConfig instance does not support setting properties.");
};
AudioOutputConfigImpl.prototype.getProperty = function (name, def) {
throw new Error("This AudioConfig instance does not support getting properties.");
};
return AudioOutputConfigImpl;
}(AudioConfig));
exports.AudioOutputConfigImpl = AudioOutputConfigImpl;
//# sourceMappingURL=AudioConfig.js.map