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
Repository
Application to classify speech prosody
Basic Info
Statistics
- Stars: 2
- Watchers: 7
- Forks: 1
- Open Issues: 3
- Releases: 2
Topics
Metadata Files
README.md
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
- Website: https://cdh.uu.nl/
- Repositories: 39
- Profile: https://github.com/CentreForDigitalHumanities
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
- Django *
- Pillow *
- gunicorn *
- matplotlib *
- pandas *
- praat-parselmouth *
- psycopg2 *
- pympi-ling *
- sklearn *
- 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
- openjdk slim build
- python 3.9 build