Skip to content

Commit

Permalink
Created MicrosoftProvider.
Browse files Browse the repository at this point in the history
  • Loading branch information
moonstar-x committed Mar 20, 2022
1 parent 86184e7 commit 939a22c
Show file tree
Hide file tree
Showing 3 changed files with 87 additions and 2 deletions.
3 changes: 2 additions & 1 deletion src/app.js
Original file line number Diff line number Diff line change
Expand Up @@ -95,7 +95,8 @@ client.registry
['config', 'Configuration Commands'],
['google-tts', 'Google TTS Commands'],
['other-tts', 'Other TTS Commands'],
['misc', 'Miscellaneous Commands']
['misc', 'Miscellaneous Commands'],
['ms-tts', 'Microsoft TTS Commands']
])
.registerCommandsIn(path.join(__dirname, './commands/main'));

Expand Down
83 changes: 83 additions & 0 deletions src/classes/tts/providers/MicrosoftProvider.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,83 @@
const axios = require('axios');
const AbstractProvider = require('./AbstractProvider');
const Payload = require('../Payload');
const languageData = require('../../../../provider-data/ttstool_microsoft_languages.json');

const POST_URL = 'https://support.readaloud.app/ttstool/createParts';
const GET_URL = 'https://support.readaloud.app/ttstool/getParts';

/**
* A concrete TTS provider for TTS Tool Microsoft.
*/
class MicrosoftProvider extends AbstractProvider {
async createParts(sentence, extras) {
const { language, voice, volume, rate, pitch } = extras;

const response = await axios.post(POST_URL, [{
voiceId: voice,
ssml: `<speak version="1.0" xml:lang="${languageData[language].id}"><prosody volume="${volume}" rate="${rate}" pitch="${pitch}">${sentence}</prosody></speak>`
}]);

return response.data[0];
}

async createPayload(sentence, extras) {
const partId = await this.createParts(sentence, extras);
const url = `${GET_URL}?q=${partId}`;

return new Payload(url, sentence, MicrosoftProvider.NAME, extras);
}

getPlayLogMessage(payload, guild) {
const { sentence, extras: { language, voice, volume, rate, pitch } } = payload;

return `(Microsoft): Saying ${sentence} with language ${language} - ${voice} with ${volume} volume, ${rate} rate and ${pitch} pitch in guild ${guild.name}.`;
}
}

MicrosoftProvider.NAME = 'Microsoft';
MicrosoftProvider.FRIENDLY_NAME = 'Microsoft (TTS Tool) Provider';

MicrosoftProvider.EXTRA_FIELDS = ['language', 'voice', 'volume', 'rate', 'pitch'];
MicrosoftProvider.EXTRA_DEFAULTS = {
language: 'en',
voice: 'Microsoft US English (David)',
volume: 'default',
rate: 'medium',
pitch: 'default'
};

MicrosoftProvider.getSupportedVolumeChoices = () => {
return [
['Default Volume', 'default'],
['Silent', 'silent'],
['Extra Soft', 'x-soft'],
['Soft', 'soft'],
['Medium', 'medium'],
['Loud', 'loud'],
['Extra Loud', 'x-loud']
];
};

MicrosoftProvider.getSupportedRateChoices = () => {
return [
['Extra Slow', 'x-slow'],
['Slow', 'slow'],
['Medium', 'medium'],
['Fast', 'fast'],
['Extra Fast', 'x-fast']
];
};

MicrosoftProvider.getSupportedPitchChoices = () => {
return [
['Default Pitch', 'default'],
['Extra Low', 'x-low'],
['Low', 'low'],
['Medium', 'medium'],
['High', 'high'],
['Extra High', 'x-high']
];
};

module.exports = MicrosoftProvider;
3 changes: 2 additions & 1 deletion src/classes/tts/providers/ProviderManager.js
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@ const { InvalidProviderError } = require('../../../errors');
const GoogleProvider = require('./GoogleProvider');
const AeiouProvider = require('./AeiouProvider');
const AmazonProvider = require('./AmazonProvider');
const MicrosoftProvider = require('./MicrosoftProvider');

class ProviderManager {
constructor(client) {
Expand All @@ -22,7 +23,7 @@ class ProviderManager {
}
}

ProviderManager.SUPPORTED_PROVIDERS = [GoogleProvider, AeiouProvider, AmazonProvider];
ProviderManager.SUPPORTED_PROVIDERS = [GoogleProvider, AeiouProvider, AmazonProvider, MicrosoftProvider];
ProviderManager.DEFAULT_PROVIDER = GoogleProvider;

ProviderManager.PROVIDER_FRIENDLY_NAMES = ProviderManager.SUPPORTED_PROVIDERS.reduce((obj, Provider) => {
Expand Down

0 comments on commit 939a22c

Please sign in to comment.