tts-narrator
TypeScript icon, indicating that this package has built-in type declarations

1.1.0 • Public • Published

tts-narrator

Generate narration with Text-To-Speech technology

Version Downloads/week CI

The input is a script file in YAML format. Example script files can be found under test/fixtures.

The script file is structured in this way:

  • settings: script settings
    • voice: voice settings at script level
  • chapters: array of chapter
    • each chapter can contain settings and multiple sections:
      • settings: chapter level voice settings that can override script level voice settings
      • sections: array of sections
        • each section can contain settings and multiple paragraphs:
          • settings: section level voice settings that can override upper level voice settings
          • paragraphs: array of paragraphs
            • each paragraph can contain settings and text:
              • settings: paragraph level voice settings that can override upper level voice settings
              • text: text content that needs to be converted into audio

The text field of a paragraph can be pure text, or an SSML fragment. Multi-line strings are supported.

It has command line flags --play and --no-play to control whether generated MP3s should be played back. This feature is supported by a dev dependency node-speaker. If you use it as a library in your project, and would like to have the play back capability, you need to install node-speaker as a dependency in your project.

When running on MacOS, to avoid illegal hardware instruction issue, try npm i speaker --mpg123-backend=openal

CLI

USAGE
  $ tts-narrator   FILE[-h] [-v] [-d] [-s azure] [-k <value>]
    [--subscription-key-env <value>] [-r <value>] [-p] [-i] [-o] [--dry-run]
    [--ssml | -q] [--chapters <value>] [--sections <value>]

ARGUMENTS
  FILE  path to the script file (.yml)

FLAGS
  -d, --debug                         output debug information
  -h, --help                          Show help
  -i, --interactive                   wait for key press before entering each
                                      section
  -k, --subscription-key=<value>      Azure Speech service subscription key
  -o, --overwrite                     always overwrite previously generated
                                      audio files
  -p, --[no-]play                     play generated audio
  -q, --quiet                         output warn and error information only
  -r, --region=<value>                region of the text-to-speech service
  -s, --service=<option>              text-to-speech service to use
                                      <options: azure>
  -v, --version                       Show CLI version
      --chapters=<value>              list of chapters to process, examples:
                                      "1-10,13,15", "4-"
      --dry-run                       don't try to generate or play audio
      --sections=<value>              list of sections to process, examples:
                                      "1-10,13,15", "5-"
      --ssml                          display generated SSML
      --subscription-key-env=<value>  Name of the environment variable that
                                      holds the subscription key

DESCRIPTION
  Generate narration with Text-To-Speech technology

EXAMPLES
  $ tts-narrator myscript.yml --play --interactive --service azure --subscription-key-env SUBSCRIPTION_KEY --region australiaeast

  $ tts-narrator ./test/fixtures/script3.yml -s azure --ssml -r australiaeast --subscription-key-env=TTS_SUB_KEY  --no-play --interactive -d

  $ tts-narrator ./test/fixtures/script3.yml -s azure -r australiaeast --subscription-key-env=TTS_SUB_KEY --quiet

  $ tts-narrator ./test/fixtures/script3.yml

API

tts-narrator

Modules

Classes

Class: AzureTtsService

azure-tts-service.AzureTtsService

Hierarchy

Constructors

constructor

new AzureTtsService()

Inherited from

BaseTtsService.constructor

Methods

buildSpeakStartTag

Protected buildSpeakStartTag(voiceSettings): string

Parameters
Name Type
voiceSettings VoiceSettings
Returns

string

Overrides

BaseTtsService.buildSpeakStartTag


buildVoiceStartTag

Protected buildVoiceStartTag(voiceSettings): string

Parameters
Name Type
voiceSettings VoiceSettings
Returns

string

Inherited from

BaseTtsService.buildVoiceStartTag


generateAudio

generateAudio(ssml, options): Promise<any>

Parameters
Name Type
ssml string
options AzureAudioGenerationOptions
Returns

Promise<any>

Overrides

BaseTtsService.generateAudio


generateSSML

generateSSML(paragraph): Promise<string>

Parameters
Name Type
paragraph NarrationParagraph
Returns

Promise<string>

Inherited from

BaseTtsService.generateSSML


generateSsmlWithoutValidation

Protected generateSsmlWithoutValidation(paragraph): Object

Parameters
Name Type
paragraph NarrationParagraph
Returns

Object

Name Type
lineOffset number
ssml string
Inherited from

BaseTtsService.generateSsmlWithoutValidation


validateXML

Protected validateXML(xml, lineOffset): void

Parameters
Name Type
xml string
lineOffset number
Returns

void

Inherited from

BaseTtsService.validateXML

Class: export=

index.export=

Hierarchy

  • Command

    export=

Constructors

constructor

new export=(argv, config)

Parameters
Name Type
argv string[]
config Config
Inherited from

Command.constructor

Properties

Property Description
Static args: Object Type declaration

Static description: string = 'Generate narration with Text-To-Speech technology' Overrides

Command.description
Static examples: string[] Overrides

Command.examples
Static flags: Object Type declaration

Static id: string = ' ' Overrides

Command.id

Methods

run

run(): Promise<void>

Returns

Promise<void>

Overrides

Command.run

Class: NarrationChapter

narration-script.NarrationChapter

Implements

Constructors

constructor

new NarrationChapter(chapter, index, script)

Parameters
Name Type
chapter Chapter
index number
script NarrationScript

Properties

Property Description
Protected chapter: Chapter
index: number
script: NarrationScript
sections: NarrationSection[] Implementation of

Chapter.sections

Accessors

key

get key(): string

Returns

string

Implementation of

Chapter.key


settings

get settings(): VoiceSettings

Returns

VoiceSettings

Implementation of

Chapter.settings

Methods

getSectionByKey

getSectionByKey(key): undefined | NarrationSection

Parameters
Name Type
key string
Returns

undefined | NarrationSection

Class: NarrationParagraph

narration-script.NarrationParagraph

Implements

Constructors

constructor

new NarrationParagraph(paragraph, index, section, chapter, script)

Parameters
Name Type
paragraph Paragraph
index number
section NarrationSection
chapter NarrationChapter
script NarrationScript

Properties

Property Description
Optional audioFilePath: string Path of the generated audio file. Only for in-memory processing, not supposed to be stored in file.
chapter: NarrationChapter
index: number
Protected paragraph: Paragraph
script: NarrationScript
section: NarrationSection

Accessors

key

get key(): string

Returns

string

Implementation of

Paragraph.key


settings

get settings(): VoiceSettings

Returns

VoiceSettings

Implementation of

Paragraph.settings


text

get text(): string

Returns

string

Implementation of

Paragraph.text

Class: NarrationScript

narration-script.NarrationScript

Implements

Constructors

constructor

new NarrationScript(script, scriptFilePath)

Parameters
Name Type
script Script
scriptFilePath string

Properties

Property Description
chapters: NarrationChapter[] Implementation of

Script.chapters
Protected script: Script
scriptFilePath: string

Accessors

settings

get settings(): ScriptSettings

Returns

ScriptSettings

Implementation of

Script.settings

Methods

export

export(): Script

Returns

Script


getChapterByKey

getChapterByKey(key): undefined | NarrationChapter

Parameters
Name Type
key string
Returns

undefined | NarrationChapter

Class: NarrationSection

narration-script.NarrationSection

Implements

Constructors

constructor

new NarrationSection(section, index, chapter, script)

Parameters
Name Type
section Section
index number
chapter NarrationChapter
script NarrationScript

Properties

Property Description
chapter: NarrationChapter
index: number
paragraphs: NarrationParagraph[] Implementation of

Section.paragraphs
script: NarrationScript
Protected section: Section

Accessors

key

get key(): string

Returns

string

Implementation of

Section.key


settings

get settings(): VoiceSettings

Returns

VoiceSettings

Implementation of

Section.settings

Class: ScriptProcessor

script-processor.ScriptProcessor

Constructors

constructor

new ScriptProcessor(scriptFilePath, flags, cliConsole?)

Parameters
Name Type
scriptFilePath string
flags Object & FlagOutput & {}
cliConsole? LineLogger<(message?: any, ...optionalParams: any[]) => void, (message?: any, ...optionalParams: any[]) => void, (message?: any, ...optionalParams: any[]) => void, (message?: any, ...optionalParams: any[]) => void>

Properties

Property Description
Protected _script: NarrationScript
Protected audioGenerationOptions: undefined | AudioGenerationOptions
Protected chapterRange: undefined | MultiRange
Protected cliConsole: LineLogger<(message?: any, ...optionalParams: any[]) => void, (message?: any, ...optionalParams: any[]) => void, (message?: any, ...optionalParams: any[]) => void, (message?: any, ...optionalParams: any[]) => void>
Protected flags: Object & FlagOutput & {}
Protected scriptFilePath: string
Protected sectionRange: undefined | MultiRange
Protected ttsService: TtsService

Accessors

script

get script(): NarrationScript

Returns

NarrationScript

Methods

determineAudioFilePath

Protected determineAudioFilePath(ssmlHash, _paragraph): Promise<string>

Parameters
Name Type
ssmlHash string
_paragraph NarrationParagraph
Returns

Promise<string>


hash

Protected hash(ssml, _paragraph): string

Parameters
Name Type
ssml string
_paragraph NarrationParagraph
Returns

string


initialiseTtsServiceIfNeeded

Protected initialiseTtsServiceIfNeeded(): Promise<void>

Returns

Promise<void>


loadScript

Protected loadScript(): Promise<void>

Returns

Promise<void>


parseRanges

Protected parseRanges(): void

Returns

void


processGeneratedAudioFile

Protected processGeneratedAudioFile(audioFilePath): Promise<string>

Parameters
Name Type
audioFilePath string
Returns

Promise<string>


run

run(reconstructedcommandLine?): Promise<void>

Parameters
Name Type
reconstructedcommandLine? string
Returns

Promise<void>


runWithoutCatch

runWithoutCatch(reconstructedcommandLine?): Promise<void>

Parameters
Name Type
reconstructedcommandLine? string
Returns

Promise<void>

Class: BaseTtsService

tts-service.BaseTtsService

Hierarchy

Implements

Constructors

constructor

new BaseTtsService()

Methods

buildSpeakStartTag

Protected buildSpeakStartTag(voiceSettings): string

Parameters
Name Type
voiceSettings VoiceSettings
Returns

string


buildVoiceStartTag

Protected buildVoiceStartTag(voiceSettings): string

Parameters
Name Type
voiceSettings VoiceSettings
Returns

string


generateAudio

generateAudio(_ssml, _options): Promise<void>

Parameters
Name Type
_ssml string
_options AudioGenerationOptions
Returns

Promise<void>

Implementation of

TtsService.generateAudio


generateSSML

generateSSML(paragraph): Promise<string>

Parameters
Name Type
paragraph NarrationParagraph
Returns

Promise<string>

Implementation of

TtsService.generateSSML


generateSsmlWithoutValidation

Protected generateSsmlWithoutValidation(paragraph): Object

Parameters
Name Type
paragraph NarrationParagraph
Returns

Object

Name Type
lineOffset number
ssml string

validateXML

Protected validateXML(xml, lineOffset): void

Parameters
Name Type
xml string
lineOffset number
Returns

void

Enums

Enumeration: TtsServiceType

script-processor.TtsServiceType

Enumeration Members

Azure

Azure = "azure"

Interfaces

Interface: AzureAudioGenerationOptions

azure-tts-service.AzureAudioGenerationOptions

Hierarchy

Properties

Property Description
outputFilePath: string Inherited from

AudioGenerationOptions.outputFilePath
Optional serviceRegion: string
Optional subscriptionKey: string

Interface: Chapter

narration-script.NarrationScriptFile.Chapter

Implemented by

Properties

Property Description
Optional key: string
sections: Section[]
Optional settings: VoiceSettings

Interface: Paragraph

narration-script.NarrationScriptFile.Paragraph

Implemented by

Properties

Property Description
Optional key: string
Optional settings: VoiceSettings
text: string

Interface: Script

narration-script.NarrationScriptFile.Script

Implemented by

Properties

Property Description
chapters: Chapter[]
settings: ScriptSettings

Interface: Section

narration-script.NarrationScriptFile.Section

Implemented by

Properties

Property Description
Optional key: string
paragraphs: Paragraph[]
Optional settings: VoiceSettings

Interface: ScriptSettings

narration-script.ScriptSettings

Properties

Property Description
Optional service: Azure
Optional voice: VoiceSettings

Interface: VoiceSettings

narration-script.VoiceSettings

Properties

Property Description
Optional language: string
Optional name: string

Interface: AudioGenerationOptions

tts-service.AudioGenerationOptions

Hierarchy

Properties

Property Description
outputFilePath: string

Interface: TtsService

tts-service.TtsService

Implemented by

Methods

generateAudio

generateAudio(ssml, options): Promise<void>

Parameters
Name Type
ssml string
options AudioGenerationOptions
Returns

Promise<void>


generateSSML

generateSSML(paragraph): Promise<string>

Parameters
Name Type
paragraph NarrationParagraph
Returns

Promise<string>

Modules

Module: audio-utils

Functions

getAudioFileDuration

getAudioFileDuration(filePath): Promise<number>

Parameters
Name Type
filePath string
Returns

Promise<number>


playMp3File

playMp3File(filePath, infoLogger): Promise<void>

Parameters
Name Type
filePath string
infoLogger (msg: string) => void
Returns

Promise<void>

Module: azure-tts-service

Classes

Interfaces

Module: index

Classes

Namespace: NarrationScriptFile

narration-script.NarrationScriptFile

Interfaces

Module: narration-script

Namespaces

Classes

Interfaces

Functions

loadScript

loadScript(scriptFilePath): Promise<NarrationScript>

Parameters
Name Type
scriptFilePath string
Returns

Promise<NarrationScript>


saveScript

saveScript(script): Promise<void>

Parameters
Name Type
script NarrationScript
Returns

Promise<void>

saveScript(script, scriptFilePath): Promise<void>

Parameters
Name Type
script Script
scriptFilePath string
Returns

Promise<void>

Module: script-processor

Enumerations

Classes

Variables

scriptProcessorFlags

Const scriptProcessorFlags: Object

CLI flags that are required/used by the ScriptProcessor.

Type declaration
Name Type
chapters OptionFlag<undefined | string, CustomOptions>
debug BooleanFlag<boolean>
dry-run BooleanFlag<boolean>
interactive BooleanFlag<boolean>
overwrite BooleanFlag<boolean>
play BooleanFlag<boolean>
quiet BooleanFlag<boolean>
region OptionFlag<undefined | string, CustomOptions>
sections OptionFlag<undefined | string, CustomOptions>
service OptionFlag<undefined | string, CustomOptions>
ssml BooleanFlag<boolean>
subscription-key OptionFlag<undefined | string, CustomOptions>
subscription-key-env OptionFlag<undefined | string, CustomOptions>

Module: tts-service

Classes

Interfaces

Module: types

References

AudioGenerationOptions

Re-exports AudioGenerationOptions


AzureAudioGenerationOptions

Re-exports AzureAudioGenerationOptions


AzureTtsService

Re-exports AzureTtsService


BaseTtsService

Re-exports BaseTtsService


NarrationChapter

Re-exports NarrationChapter


NarrationParagraph

Re-exports NarrationParagraph


NarrationScript

Re-exports NarrationScript


NarrationScriptFile

Re-exports NarrationScriptFile


NarrationSection

Re-exports NarrationSection


ScriptProcessor

Re-exports ScriptProcessor


ScriptSettings

Re-exports ScriptSettings


TtsService

Re-exports TtsService


TtsServiceType

Re-exports TtsServiceType


VoiceSettings

Re-exports VoiceSettings


getAudioFileDuration

Re-exports getAudioFileDuration


loadScript

Re-exports loadScript


playMp3File

Re-exports playMp3File


saveScript

Re-exports saveScript


scriptProcessorFlags

Re-exports scriptProcessorFlags

Versions

Current Tags

  • Version
    Downloads (Last 7 Days)
    • Tag
  • 1.1.0
    37
    • latest

Version History

Package Sidebar

Install

npm i tts-narrator

Weekly Downloads

59

Version

1.1.0

License

Apache-2.0

Unpacked Size

88.6 kB

Total Files

26

Last publish

Collaborators

  • james-hu