Soundgen is an open-source algorithm for the synthesis of human non-speech sounds and animal vocalizations in a user-friendly way, with a limited number of acoustically meaningful parameters. This tool is primarily intended for psychological and biological research. Potentially it can also be used for human-machine interaction, since it provides a straightforward method for reproducing or generating de novo a wide variety of emotional vocalizations. Soundgen is published on CRAN as an R package, which also offers tools for acoustic analysis that were used in all my publications.
Bug reports, criticisms and suggestions are all warmly welcome! Soundgen is written and maintained by Andrey Anikin. You can reach me at rty.anik / at / rambler.ru
- Online app for sound synthesis (limited server time): the same as soundgen_app(), but it runs online in a browser, so you don't have to install anything
- Released R package on CRAN
To install from R: install.packages("soundgen")
- Developmental version and source code on github
- Vignette on sound generation (html)
- Vignette on acoustic analysis (html)
- Vignette on how to find the appropriate soundgen settings in order to manually create a synthetic version of a particular recorded sound (html)
Known bugs and issues
- The amount of high-frequency energy in the spectrum (slightly) varies depending on the sampling rate. The reason is that the number of extra formants added on top of the user-specified ones depends on the sampling rate (Nyquist frequency). Ideally, a generalized function summarizing the theoretical contribution of all formants above Nyquist should be used instead. If anyone knows who to do this, I'll greatly appreacite a tip!
- Be careful with the new function getLoudness(), which was introduced in v1.3.1. It is highly experimental and not yet properly validated!
Noticed more bugs? Need some functionality that is not available at present? Don't hesitate to send me an email!
- Mar 13, 2019: a marjor'ish new release v1.4.0. Several new functions, notably tools for producing modulation spectra, measuring RMS amplitude per frame, normalizing sounds by peak / RMS amplitude, etc. Also note some changes in the soundgen() function itself: the amplitude of noise component can now be defined relative to various aspects of the voiced component, plus all depracted parameters like pitchAnchors, noiseAnchors and so on have been dropped.
- Jan 10, 2019: another minor update to v1.3.2. More debugging - is there an end to these bugs? The experimental feature of synthesizing one glottal pulse at a time (the "glottis" argument) is now slightly less experimental and more sensible. Note that the discovered and corrected misbehavior of the "rolloffOct" argument affects many presets, examples in the vignettes, etc. All documentation and demos have been updated accordingly.
- Oct 04, 2018: version v1.3.1. Lots of debugging plus a few nifty new features like the ability to add the spectral envelope of a recorded sound to another sound with addFormants(). The most significant new functionality is estimation of subjective loudness in sone with a new function, getLoudness().
- Aug 31, 2018: version v1.3.0. The main change is that there is no longer any distinction between "anchors" and other vectorized parameters. In other words, it is now possible to specify any change in voice quality (rolloff, nonlinear effects, etc.) directly on a natural time scale. The names of "anchor" arguments are simplified to reflect this change. There is a new vignette on reproducing an existing vocalization with soundgen (on cogsci.se only, not included with the published package). There are also extended plotting options, including an oscillogram on a dB scale.
- Aug 04, 2018: the release of a minor update, soundgen v1.2.1. Updated and extended vignette on acoustic analysis, a streamlined new function generateNoise() for synthesizing unvoiced sounds and non-biological noises, a few new arguments to soundgen(), upgraded functions flatEnv(), schwa(), crossFade(), etc.
- Jul 27, 2018: an article describing how soundgen works and presenting the results of a validation experiment is published by Behavior Research Methods with open access: https://link.springer.com/article/10.3758/s13428-018-1095-7. Please cite this publication if you use soundgen in your work.
- Mar 04, 2018: soundgen v1.2.0 is released. More experience using soundgen for actual research, more features, fewer bugs. Better control over polysyllabic vocalizations, vectorized control parameters, reproducible nonlinear effects with precise timing, and more.
- Jan 23, 2018: another minor patch of soundgen, v1.1.2. Having used the package extensively for experimental work, I discovered and fixed a number of glitches and added some new functionality: a general scale factor for regulating formant bandwidth, schwa() function for working with formant frequencies, better plotting options, etc.
- Dec 02, 2017: soundgen v1.1.1 is on CRAN. This release is primarily a patch that fixes quite a number of small bugs. Notable new features include support for discontinuous contours allowing rapid transitions like pitch jumps, dedicated functions for post-processing like fading in/out or adding formants to an existing sound, and a one-click formant picker in the interactive app.
- Oct 19, 2017: soundgen v1.1.0 is on CRAN. Formants are synthesized "properly" in this release, with zero-pole or pole-pole models. Other improvements include synthesis of individual glottal pulses with a closed phase, dynamic control of rolloff and amplitude modulation, new functions for generating percussive sounds and raspberries, and more.
- Sep 04, 2017: the first official release of soundgen v1.0.0 is published on CRAN as an R package.
This page was last updated on Dec 11, 2019.