@theresnotime/ipa-to-ssml
v1.2.0
Published
[![Node.js CI](https://github.com/theresnotime/ipa-to-ssml/actions/workflows/node.js.yml/badge.svg)](https://github.com/theresnotime/ipa-to-ssml/actions/workflows/node.js.yml) [![CodeQL](https://github.com/theresnotime/ipa-to-ssml/actions/workflows/codeql
Downloads
9
Readme
Node package for converting IPA to valid SSML elements
Sometimes you just wish there was a Node.js package that did a thing, such as convert IPA to a valid SSML element — sometimes you wish it so much you end up writing it. 😅
Installing
Go grab it on npmjs via npm i @theresnotime/ipa-to-ssml
You'll then be all set to require
it:
const ipaToSSML = require('@theresnotime/ipa-to-ssml');
Simples!
IPA goes in..
We pass the represented word
, its ipa
representation, and optionally a variant
of SSML to generate:
let ssmlResult = await ipaToSSML.convertToSSML('hello', '/həˈləʊ/', 'default');
..and SSML comes out!
<?xml version="1.0"?>
<speak version="1.1"
xmlns="http://www.w3.org/2001/10/synthesis"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.w3.org/2001/10/synthesis
http://www.w3.org/TR/speech-synthesis11/synthesis.xsd"
xml:lang="en-US">
<phoneme alphabet="ipa" ph="/həˈləʊ/">hello</phoneme>
</speak>
(don't blame me for how ugly that looks, blame the w3c...)
Variants
default
— this is valid SSML, and should be accepted by all (SSML accepting) TTS enginespolly
— for now, just a copy ofdefault
🤷♀️ works with Amazon Pollylarynx
— this larger SSML element is required for getting rhasspy/larynx (a very cool TTS engine..) to play ball
Contributing
This is the first module I've ever published to npmjs, and my first foray into Node modules, so there's bound to be things you spot and want to fix — I'd love to get your feedback and PRs!
Quick steps
- Fork n' clone this repo
- Do a
npm install
- Run
npm test
because who knows, maybe its already broken - Hack!
Tests? For JavaScript!?
In writing this I discovered Jest, a "delightful JavaScript Testing Framework with a focus on simplicity" — I dunno about that, as I've never written tests for JavaScript, but it was pretty painless :> they live in tests/ and the syntax for them is super simple.