Learn R Programming

⚠️There's a newer version (2.7.2) of this package.Take me there.

soundgen

R package for sound synthesis and acoustic analysis.
Homepage with help, demos, etc: http://cogsci.se/soundgen.html
Source code on github: https://github.com/tatters/soundgen

Performs parametric synthesis of sounds with harmonic and noise components such as animal vocalizations or human voice. Also includes tools for spectral analysis, pitch tracking, audio segmentation, self-similarity matrices, morphing, etc.

Key functions:

  • Sound synthesis from R console: soundgen()
  • Shiny app for sound synthesis (opens in a browser): soungen_app()
  • Acoustic analysis of a wav/mp3 file: analyze()
  • Shiny app for editing intonation contours (opens in a browser): pitch_app()
  • Measuring syllables, pauses, and bursts in a wav/mp3 file: segment()

For more information, please see the vignettes on sound synthesis and acoustic analysis:

vignette("sound_generation", package="soundgen")

vignette("acoustic_analysis", package="soundgen")

Or, to open the vignettes in a browser:
RShowDoc('sound_generation', package = 'soundgen')

RShowDoc('acoustic_analysis', package = 'soundgen')

Installation

To install the current release from CRAN: install.packages("soundgen")

NB: Make sure all dependencies have been installed correctly! For problems with seewave, see http://rug.mnhn.fr/seewave/

On Macs, you may need to do the following:

  • First install brew according to the instructions here: https://brew.sh/
  • Then run the following from the terminal
    brew install libsndfile
    brew install fftw
  • Finally, install soundgen in R:
    install.packages("soundgen")

Copy Link

Version

Install

install.packages('soundgen')

Monthly Downloads

746

Version

1.5.0

License

GPL (>= 2)

Maintainer

Andrey Anikin

Last Published

September 11th, 2019

Functions in soundgen (1.5.0)

Mode

Modified mode
addFormants

Add formants
clumper

Clump a sequence into large segments
beat

Generate beat
addVectors

Add overlapping vectors
addPitchCands

Plot pitch candidates
analyzeFolder

Analyze folder
HzToSemitones

Convert Hz to semitones
analyze

Analyze sound
analyzeFrame

Analyze fft frame
fart

Fart
convertStringToFormants

Prepare a list of formants
filled.contour.mod

Modified filled.contour
compareSounds

Compare sounds (experimental)
ftwindow_modif

Fourier transform windows (seewave)
gaussian.w

Gaussian window
getFormantDispersion

Get formant dispersion
divideIntoSyllables

Syllable structure of a bout
defaults_analyze

Defaults and ranges for analyze()
gaussianSmooth2D

Gaussian smoothing in 2D
generateEpoch

Generate an epoch
defaults

Shiny app defaults
findBursts

Find bursts
findGrad

Find gradient
downsample

Simple downsampling
getFrameBank

Frame bank
convert_sec_to_hms

Print time
getMelSpec

Mel-transformed spectrum
getPrior

Get prior for pitch candidates
getLoudnessPerFrame

Get loudness per frame
getCheckerboardKernel

Checkerboard kernel
getBandwidth

Get bandwidth
getRMS

RMS amplitude per frame
getVocalFry_per_epoch

Constant subharmonics regime
estimateVTL

Estimate vocal tract length
drawContour

Draw contour
generateGC

Generate glottal cycles
costPerPath

Cost per path
getSmoothContour

Smooth contour from anchors
generateHarmonics

Generate harmonics
morph

Morph sounds
listDepth

List depth
normalizeFolder

Normalize folder
modulationSpectrumFolder

Modulation spectrum per folder
morphList

Morph lists
killDC

Kill DC
getLoudness

Get loudness
getSpectralEnvelope

Spectral envelope
getLoudnessFolder

Loudness per folder
costJumps

Cost of jumps
getVocalFry

Subharmonics
isCentral.localMax

Simple peak detection
matchColumns

Match number of columns
evaluatePars

Evaluate parameters for optimization
iso226

iso226
reportCI

Report CI
crossFade

Join two waveforms by cross-fading
fade

Fade
forcePerPath

Force per path
generateNoise

Generate noise
flatSpectrum

Flat spectrum
getPitchSpec

BaNa pitch tracker
getDiscreteContour

Discrete smooth contour from anchors
getIntegerRandomWalk

Discrete random walk
getGlottalCycles

Divide f0 contour into glottal cycles
generatePath

Generate path
findSyllables

Find syllables
matchLengths

Resize vector to required length
getRMSFolder

RMS amplitude per folder
soundgen_app

Interactive sound synthesizer
schwa

Schwa-related formant conversion
pitch_app

Interactive pitch editor
playme

Play audio
wiggleAnchors

Randomly modify anchors
permittedValues

Defaults and ranges for soundgen()
scaleSPL

Scale SPL
pathfinding_slow

Path through pitch candidates: slow
soundgen

Generate a sound
segment

Segment a sound
htmlPlots

HTML for clickable plots
interpolMatrix

Interpolate matrix
notesDict

Conversion table from Hz to musical notation
morphDF

Morph dataframes
presets

Presets
getRandomWalk

Random walk
morphFormants

Morph formants
interpolate

Interpolate
optimizePars

Optimize parameters for acoustic analysis
wiggleGC

Wiggle glottal cycles
mergeSyllables

Merge syllables
getDom

Get lowest dominant frequency band
phon2sone

Convert phon to sone
modulationSpectrum

Modulation spectrum
sampleModif

sampleModif
pitchManual

Manual pitch estimation in 260 sounds
scaleNoiseAnchors

Scale noise anchors
upsample

Upsample pitch contour
transplantFormants

Transplant formants
segmentFolder

Segment all files in a folder
ssm

Self-similarity matrix
splitContour

Split contour
getPitchCep

Cepstral pitch tracker
findVoicedSegments

Find voiced segments
wigglePars

Wiggle parameters
zeroOne

Normalize 0 to 1
to_dB

Convert to dB
findZeroCrossing

Find zero crossing
getEntropy

Entropy
getNovelty

SSM novelty
flatEnv

Flat envelope
getEnv

Get amplitude envelope
getPitchAutocor

Autocorrelation pitch tracker
reformatAnchors

Reformat anchors
getSigmoid

Get sigmoid filter
matchPars

Match soundgen pars (experimental)
pathfinder

Pathfinder
logMatrix

Log-warp matrix
pDistr

Proportion of total
getRough

Get roughness
osc_dB

Oscillogram dB
getRolloff

Control rolloff of harmonics
log01

log01
segmentManual

Manual counts of syllables in 260 sounds
medianSmoother

Median smoothing
reportTime

Report time
rnorm_truncated

Random draw from a truncated normal distribution
selfsim

Compute self-similarity
snake

Snake
semitonesToHz

Convert semitones to Hz
spectrogram

Spectrogram
spectrogramFolder

Save spectrograms per folder
pathfinding_fast

Path through pitch candidates: fast
reformatFormants

Reformat formants
spreadSpec

Spread spectrum