When proceeding to the next file in the cue, two types of backups are
created. (1) A global object called "my_pitch" is created or updated. This
list becomes visible when the app is terminated, and it contains the usual
outputs of analyze() ($detailed and $summary) plus lists of manually
corrected voiced and unvoiced frames. (2) The app saves to disk a .csv file
with one row per audio file. Apart from the usual descriptives from
analyze(), there are two additional columns: "time" with time stamps (the
midpoint of each STFT frame, ms) and "pitch" with the manually corrected
pitch values for each frame (Hz). When the orange "Download results" button
is clicked, a context menu pops up offering to terminate the app - if that
happens, the results are also returned directly into R. To process pitch
contours further in R, work directly with my_pitch[[myfile]]$time and
my_pitch[[myfile]]$pitch or, if loading the csv file, do something like:
a = read.csv('~/Downloads/output.csv', stringsAsFactors = FALSE)
pitch = as.numeric(unlist(strsplit(a$pitch, ',')))
mean(pitch, na.rm = TRUE); sd(pitch, na.rm = TRUE)
Suggested workflow
Start by setting the basic analysis settings such as pitchFloor,
pitchCeiling, silence, etc. Then click "Load audio" to upload one or several
audio files (wav/mp3). Long files will be very slow, so please cut your audio
into manageable chunks (ideally <10 s). If Shiny complains that maximum
upload size is exceeded, you can increase it, say to 30 MB, with
`options(shiny.maxRequestSize = 30 * 1024^2)`. Once the audio has been
uploaded to the browser, fine-tune the analysis settings as needed, edit the
pitch contour in the first file to your satisfaction, then click "Next" to
proceed to the next file, etc. Remember that setting a reasonable prior is
often faster than adjusting the contour one anchor at a time. When done,
click "Save results". If working with many files, you might want to save the
results occasionally in case the app crashes (although you should still be
able to recover your data if it does - see below).
How to edit pitch contours
Left-click to add a new anchor, double-click to remove it or unvoice the
frame. Each time you make a change, the entire pitch contour is re-fit, so
making a change in one frame can affect the path through candidates in
adjacent frames. You can control this behavior by changing the settings in
Out/Path and Out/Smoothing. If correctly configured, the app corrects the
contour with only a few manual values - you shouldn't need to manually edit
every single frame. For longer files, you can zoom in/out and navigate within
the file. You can also select a region to voice/unvoice or shift it as a
whole or to set a prior based on selected frequency range.
Recovering lost data
Every time you click "next" or "last" to move in between files in the queue,
the output you've got so far is saved in a backup file called "temp.csv", and
the "my_pitch" global object is updated. If the app crashes or is closed
without saving the results, this backup file preserves your data. To recover
it, access this file manually on disk or simply restart pitch_app() - a
dialog box will pop up and ask whether you wank to append the old data to the
new one. Path to backup file:
"[R_installation_folder]/soundgen/shiny/pitch_app/www/temp.csv", for example,
"/home/allgoodguys/R/x86_64-pc-linux-gnu-library/3.6/soundgen/shiny/pitch_app/www/temp.csv"