aasp

Application to classify speech prosody

https://github.com/centrefordigitalhumanities/aasp

Science Score: 67.0%

This score indicates how likely this project is to be science-related based on various indicators:

  • CITATION.cff file
    Found CITATION.cff file
  • codemeta.json file
    Found codemeta.json file
  • .zenodo.json file
    Found .zenodo.json file
  • DOI references
    Found 2 DOI reference(s) in README
  • Academic publication links
    Links to: zenodo.org
  • Academic email domains
  • Institutional organization owner
  • JOSS paper metadata
  • Scientific vocabulary similarity
    Low similarity (11.6%) to scientific vocabulary

Keywords

classification docker prosody python speech
Last synced: 4 months ago · JSON representation ·

Repository

Application to classify speech prosody

Basic Info
  • Host: GitHub
  • Owner: CentreForDigitalHumanities
  • License: bsd-3-clause
  • Language: R
  • Default Branch: develop
  • Homepage:
  • Size: 30.2 MB
Statistics
  • Stars: 2
  • Watchers: 7
  • Forks: 1
  • Open Issues: 3
  • Releases: 2
Topics
classification docker prosody python speech
Created about 6 years ago · Last pushed 8 months ago
Metadata Files
Readme License Citation

README.md

DOI

Automatic Analysis of Speech Prosody

An application to analyze speech prosody, using two approaches: - AuToDI (Automatic ToDI) - suited especially for Dutch language files - FDA (Functional Discriminative Analysis)

For a description of the system, see Hu (2020):

Hu, N., Janssen, B., Hanssen, J., Gussenhoven, C., & Chen, A. (2020). Automatic Analysis of Speech Prosody in Dutch. In Proc. Interspeech 2020 (pp. 155–159). https://doi.org/10.21437/Interspeech.2020-2142

The application was realized through Utrecht University's Research IT innovation fund awarded to principal investigator Aoju Chen. See this website for a project overview.

Usage

Add a selection of files from your computer to the analysis set. These files should be pairs of .TextGrid and .wav files of the same name. The .wav files should have a sampling rate of 16kHz and contain a single channel. The .TextGrid files should contain at least two boundaries. Add a label (called "Speaker name", but it can be any label which helps to distinguish files), and click "Upload".

In the next step, select files for analysis, and whether to apply AuToDI or FDA. After that, you will be asked which tier in the .TextGrid files should be used for analysis.

In the final step, the results of the analysis can be downloaded as a .zip file.

AuToDI

This part of the code reuses AuToBI (Rosenberg, 2010), a Java application to automatically annotate prosody with ToBI labels. The Java applciation is used for generating descriptors of the frequency development only; custom classifiers were trained for the ToDI annotation system for the Dutch language. These classifiers can be found in /AuToDI/classifiers. They are pickled sklearn models.

Rosenberg, A. (2010). Autobi-a tool for automatic tobi annotation. In Eleventh Annual Conference of the International Speech Communication Association.

FDA

This part of the application extracts f0, f1 and f2 from the audio files with the Python wrapper around Praat, Parselmouth. Then it uses R scripts modified from the FDA R scripts by Gubian (cf. Gubian, 2015), which fit B-splines to the frequency shapes, and list their principal components.

In order to use FDA, you need to specify how many knots (i.e., how many different curves are "attached" to each other) and which smoothing factor lambda should be used.

Gubian, M., Torreira, F., & Boves, L. (2015). Using functional data analysis for investigating multidimensional dynamic phonetic contrasts. Journal of Phonetics, 49, 16-40.

Run

Download and extract this repository.

Using Docker

Using Docker is the easiest way to run this application locally. This will work on Linux, Mac OS, and Windows 10 Professional. Warning: Docker and the images created for this application will take several GBs of disk space.

First, download and install Docker Desktop. When Docker is running, you can use a command line utilitiy (Terminal on Mac, CMD.exe on Windows) to change to the directory where you extracted this repository: cd /path/to/directory

Then you can start the Docker containers by running: docker-compose up This will take a long time to start up the first time, but restarting at a later time should be fast.

Stop the application with crtl-C. If you added items to the AASP database, these will be retained and available on your next start of the application.

If there is a new version of this software, download and extract to the same location again, then run: docker-compose up --build

Without Docker

Required software: - PostgreSQL - R - Java - Python 3.6

Create a PostgreSQL database with the name 'aasp', and a user 'aasp'. To do that, open a command line utility, and enter the following, replacing /path/to/your/pgsql/data with the path in which your Postgres data is saved. This is typically /usr/local/pgsql/data on a Linux machine. On Mac OS, you may have installed Postgres through the Postgres App. In that case, you can open the app, and find out the location in the Server Settings... menu. postgres -D /path/to/your/pgsql/data create user aasp with createdb password 'aasp'; create database aasp; grant all on database aasp to aasp;

To start the app, create a virtual environment, install requirements and initialize the database: pip install -r requirements.txt python manage.py makemigrations python manage.py migrate python manage.py createsuperuser

To start the application on localhost:8400, run: python manage.py runserver --port 8400

Deployment

To deploy this software externally, check out this repository on the server. Copy the docker-compose-deploy.yaml and nginx-prod.conf to a protected directory, and rename them to docker-compose.yaml and nginx.prod, respectively. Create an .env file with the following variables: yaml``` SQLENGINE=django.db.backends.postgresql SQLDATABASE={your-database-name} SQLUSER={your-database-user} SQLPASSWORD={your-database-password} SQLHOST=db SQLPORT=5432 MAXUPLOADEDSIZE=10000000 # set this limit smaller if your server is open to the outside world! MAXUPLOADEDFILES=500 # set this limit smaller if your server is open to the outside world!

SECRETKEY={your-django-secret-key} DEBUG=False ALLOWEDHOSTS={the-url-of-your-server} `` Then, rundocker compose up -d` to start the containers.

Owner

  • Name: Centre for Digital Humanities
  • Login: CentreForDigitalHumanities
  • Kind: organization
  • Email: cdh@uu.nl
  • Location: Netherlands

Interdisciplinary centre for research and education in computational and data-driven methods in the humanities.

Citation (CITATION.cff)

# This CITATION.cff file was generated with cffinit.
# Visit https://bit.ly/cffinit to generate yours today!

cff-version: 1.2.0
title: AASP
message: >-
  If you use this software, please cite it using the
  metadata from this file.
type: software
authors:
  - name: 'Research Software Lab, Centre for Digital Humanities, Utrecht University'
    website: 'https://cdh.uu.nl/centre-for-digital-humanities/research-software-lab/'
    affiliation: Utrecht University
identifiers:
  - type: doi
    value: 10.5281/zenodo.8169033
repository-code: 'https://github.com/UUDigitalHumanitieslab/AASP'
abstract: >-
  AASP (Automatic Analysis of Speech Prosody) is an
  application to analyze speech prosody, using two
  approaches:

  - AuToBI (Automatic ToBI, Rosenberg 2010)

  - FDA (Functional Discriminative Analysis, Gubian, 2015)

  It has been adapted for analyzing Dutch language speech
  prosody.
keywords:
  - speech
  - prosody
  - classification
license: BSD-3-Clause
commit: 190c1ff
version: 1.0.1
date-released: '2023-07-20'

GitHub Events

Total
  • Issues event: 1
  • Delete event: 3
  • Member event: 1
  • Issue comment event: 1
  • Push event: 2
  • Pull request review event: 1
  • Pull request event: 6
  • Create event: 2
Last Year
  • Issues event: 1
  • Delete event: 3
  • Member event: 1
  • Issue comment event: 1
  • Push event: 2
  • Pull request review event: 1
  • Pull request event: 6
  • Create event: 2

Dependencies

requirements.in pypi
  • Django *
  • Pillow *
  • gunicorn *
  • matplotlib *
  • pandas *
  • praat-parselmouth *
  • psycopg2 *
  • pympi-ling *
  • sklearn *
requirements.txt pypi
  • asgiref ==3.4.1
  • cycler ==0.11.0
  • django ==3.2.9
  • gunicorn ==20.1.0
  • joblib ==1.1.0
  • kiwisolver ==1.3.2
  • matplotlib ==3.4.3
  • numpy ==1.21.3
  • pandas ==1.3.4
  • pillow ==8.4.0
  • praat-parselmouth ==0.4.0
  • psycopg2 ==2.9.1
  • pympi-ling ==1.70.2
  • pyparsing ==3.0.4
  • python-dateutil ==2.8.2
  • pytz ==2021.3
  • scikit-learn ==1.0.1
  • scipy ==1.7.1
  • six ==1.16.0
  • sklearn ==0.0
  • sqlparse ==0.4.2
  • threadpoolctl ==3.0.0
Dockerfile docker
  • openjdk slim build
  • python 3.9 build