Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/m2ci-msp/gradle-flaml-plugin
Utility plugin to manage speech data following FLAC+YAML convention
https://github.com/m2ci-msp/gradle-flaml-plugin
Last synced: about 1 month ago
JSON representation
Utility plugin to manage speech data following FLAC+YAML convention
- Host: GitHub
- URL: https://github.com/m2ci-msp/gradle-flaml-plugin
- Owner: m2ci-msp
- License: lgpl-3.0
- Created: 2017-03-02T15:33:11.000Z (almost 8 years ago)
- Default Branch: master
- Last Pushed: 2024-02-08T20:38:21.000Z (11 months ago)
- Last Synced: 2024-02-08T22:32:30.528Z (11 months ago)
- Language: Groovy
- Homepage:
- Size: 442 KB
- Stars: 0
- Watchers: 2
- Forks: 1
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- License: LICENSE
Awesome Lists containing this project
README
Gradle FLAML Plugin
===================[![CI](https://github.com/m2ci-msp/gradle-flaml-plugin/actions/workflows/main.yml/badge.svg)](https://github.com/m2ci-msp/gradle-flaml-plugin/actions/workflows/main.yml)
[![License: LGPL v3](https://img.shields.io/badge/License-LGPL%20v3-blue.svg)](https://www.gnu.org/licenses/lgpl-3.0)A utility plugin for Gradle, allowing lightweight management of speech data in [FLAC] format and corresponding metadata in [YAML] format (see below).
Prerequisites
-------------[Java] (8 or newer) and [SoX] must be installed.
[FLAC] must be installed for testing.Plugin Usage
------------See https://plugins.gradle.org/plugin/org.m2ci.msp.flaml
Configuration
-------------This plugin adds a `flaml` extension, which is configured with the (relative) paths to a [FLAC] and [YAML] file like this:
```gradle
flaml {
flacFile = 'foobar.flac'
yamlFile = 'foobar.yaml'
}
```FLAML Tasks
-----------Applying this plugin to a project adds several tasks, which are configured as follows.
### `extractLabFiles` - Extracts XWaves lab files from YAML
#### Inputs
- `yamlFile`, default: `flaml.yamlFile`
#### Outputs
- `destDir`, default: `layout.buildDirectory.dir('lab')`### `extractTextFiles` - Extracts text files from YAML
#### Inputs
- `yamlFile`, default: `flaml.yamlFile`
#### Outputs
- `destDir`, default: `layout.buildDirectory.dir('text')`### `extractTextGrid` - Converts YAML to single Praat TextGrid file
#### Inputs
- `flacFile`, default: `flaml.flacFile`
- `yamlFile`, default: `flaml.yamlFile`
#### Outputs
- `textGridFile`, default: `layout.buildDirectory.file("${project.name}.TextGrid")`### `extractWavFiles` - Extracts WAV files from FLAC+YAML
#### Inputs
- `flacFile`, default: `flaml.flacFile`
- `yamlFile`, default: `flaml.yamlFile`
#### Outputs
- `destDir`, default: `layout.buildDirectory.dir('wav')`### `generateComments` - Generates comments as Properties file
#### Inputs
- `properties`, default: (empty)
#### Outputs
- `destFile`, default: `layout.buildDirectory.file('comments.properties')`### `generateFlac` - Generates FLAC from WAV file collection
#### Inputs
- `srcFiles`, default: `layout.buildDirectory.dir('wav')`
- `commentsFile`, default: `generateComments.destFile`
#### Outputs
- `flacFile`, default: `layout.buildDirectory.file("${project.name}.flac")`### `generateYaml` - Generates YAML from WAV file collection
#### Inputs
- `srcFiles`, default: `generateFlac.srcFiles`
- `commentsFile`, default: `generateComments.destFile`
#### Outputs
- `yamlFile`, default: `layout.buildDirectory.file("${project.name}.yaml")`### `generateYamlFromTextGrid` - Generates YAML from TextGrid
#### Inputs
- `srcFile`, default: `extractTextGrid.textGridFile`
#### Outputs
- `yamlFile`, default: `layout.buildDirectory.file("${project.name}.yaml")`### `injectSegments` - Injects lab files into YAML
#### Inputs
- `labDir`, default: `extractLabFiles.destDir`
- `yamlSrcFile`, default: `flaml.yamlFile`
#### Outputs
- `yamlDestFile`, default: `layout.buildDirectory.file("${project.name}.yaml")`### `injectText` - Injects text files into YAML
#### Inputs
- `textDir`, default:, `extractTextFiles.destDir`
- `yamlSrcFile`, default: `flaml.yamlFile`
#### Outputs
- `yamlDestFile`, default: `layout.buildDirectory.file("${project.name}.yaml")`FLAML (FLAC+YAML) Convention
----------------------------The FLAML convention assumes a [FLAC] file and corresponding [YAML] file describing its contents.
The YAML file is expected to contain a list of utterances, each of which is a map that must have
- a `prompt` key, where the prompt is used as the basename for individual utterance files
- a `text` key, containing the orthographic text contents of the utterance
- a `start` key providing the start time (in seconds) of the utterance in the FLAC file
- an `end` key, providing the end time (in seconds) of the utterance in the FLAC file
- *optionally* a `segments` key, providing a list of segments in the utterance, where each segment is a map that must have
- a `lab` key, providing the label of the segment
- a `dur` key, providing the duration (in seconds) of the segmentBelow is an example:
```yaml
- prompt: foo
text: Foo.
start: 0.1
end: 0.4
segments:
- lab: f
dur: 0.1
- lab: u
dur: 0.2
- prompt: bar
text: Bar.
start: 0.6
end: 0.9
segments:
- lab: b
dur: 0.1
- lab: a
dur: 0.1
- lab: r
dur: 0.1
```[FLAC]: https://xiph.org/flac/
[YAML]: https://yaml.org/
[Java]: https://java.com/download/
[SoX]: https://sox.sourceforge.net/