<p>As highlighted in this paper <a href="https://besjournals.onlinelibrary.wiley.com/doi/full/10.1111/2041-210X.12766" rel="noreferrer">https://besjournals.onlinelibrary.wiley.com/doi/full/10.1111/2041-210X.12766</a>, manual analysis where you click on a spectrogram is subjective, depends on your spectrogram settings and cannot be reproduced by others, so I highly recommend that you and anyone else avoid it:) - Use a robust measure like the D-duration instead. The D-duration is the duration of the call between the -10 dB end points of the signal envelope. One way of doing it on your waveform of call x in matlab is:</p>
<pre><code>env=abs(hilbert(x));

%make hilbert envelope
thr=10^(-10/20)*max(env); %define -10 dB threshold
t=find(env&gt;thr); %find samples above threshold
t=t(1:1+find(t(2:end)-t(1:end-1)&gt;1)); % D duration in number of samples 
t/fs  %samples divided by sampling rate to get D duration in seconds
</code></pre>

CC BY-SA 4.0
2022-07-05T12:08:07.973Z
2022-07-05T12:09:47.593Z
2022-07-05T12:09:47.593Z
Marinebioacoustics Aarhus Univ
<p>the accuracy of manual measurements may be an issue for you - or not. If trying to compare similar species with short duration calls, then a difference of 0.5ms could be important, but if comparing widely different calls, e.g a Myotis bat (2-4ms) against a Nyctalus (20-30ms), then small differences are unlikely to cause much problem.</p>
<p>One way to address the issue could be by using analytical functions to make the 'decision' for you on where to draw the lines.  You can do this using the seewave::timer() function within R. As an example, try this (taken, of course, from Jerome Sueur's book):</p>
<pre><code>library(seewave)  
data(orni)  
timer(orni, threshold=5, msmooth = c(50,0), envt=&quot;hil&quot;)
</code></pre>
<p>Which gives you this output, in graphical form.  Or you can save the output as an object to extract the numerical information.</p>
<p><a href="https://i.sstatic.net/dMHpK.png" rel="noreferrer"><img src="https://i.sstatic.net/dMHpK.png" alt="enter image description here" /></a></p>

CC BY-SA 4.0
2022-07-05T11:54:50.943Z
Hi @Carlos Abrahams, Could you please add a reference to the book mentioned in the answer, also pls upvote the question if you found it relevant?
Thejasvi
CC BY-SA 4.0
2022-07-05T11:47:47.437Z
2022-07-05T11:47:47.437Z
Carlos Abrahams
<p>Raven has a set of &quot;robust&quot; signal measurements based on peak frequency contours which are less susceptible to annotator bias; they did a presentation comparing these with traditional measurements that is archived here -</p>
<p><a href="https://ravensoundsoftware.com/knowledge-base/robust-signal-measurements/" rel="nofollow noreferrer">https://ravensoundsoftware.com/knowledge-base/robust-signal-measurements/</a></p>

CC BY-SA 4.0
2022-08-14T19:50:24.167Z
The theoretical underpinning of Raven's "robust signal measurements" can be found in [Fristrup and Watkins (1992)](https://apps.dtic.mil/sti/pdfs/ADA246578.pdf) and [Fristrup and Watkins (1994)](https://apps.dtic.mil/sti/pdfs/ADA289294.pdf).
Michael Pitzrick
CC BY-SA 4.0
2022-07-06T15:46:39.440Z
2022-07-06T15:46:39.440Z
Carly Batist
<p>Depends on your accuracy. If you'd like a 'quick and dirty' answer, then go ahead - even though the results may not be all that accurate. You could try to quantify the amount of variation caused within/across observers using synthetic signals (if using Python, <code>scipy.signal.chirp]</code> comes to the rescue. See <a href="https://docs.scipy.org/doc//scipy-1.4.0/reference/generated/scipy.signal.chirp.html" rel="nofollow noreferrer">docs here</a> ).</p>
<p>My own experience is that there's likely a good tool out there which will suit your use-case. The time spent finding the correct tool is typically time well spent in my own experience.</p>

CC BY-SA 4.0
2022-07-05T11:30:44.123Z
2022-07-05T11:30:44.123Z
Thejasvi
<p>One possibility you could use is simply to try to quantify that variation within and across observers. Ensure that each observer is exposed to the same recording multiple times across their review efforts but do not make it clear to them that it is a duplicate, and evaluate the variation on the back end. You can do the same for between-reviewer agreement. It may turn out that for your particular use case and your set of reviewers, you have an acceptable level of variation.</p>

CC BY-SA 4.0
2022-07-06T15:57:23.580Z
2022-07-06T15:57:23.580Z
dtsavage
<p>Taking visual measurements from spectrograms (e.g. by manually placing a cursor on the screen, drawing a selection box in Raven software, etc.) is not an objective method and can result in severe measurement artefacts. On top of this, this practice may also lead to systematic observer biases.</p>
<p>These papers explain the problem in more detail:</p>
<p>Zollinger et al. (2012) On the relationship between, and measurement of, amplitude and frequency in bird song. Animal Behaviour 84: e1-e9.</p>
<p>Brumm et al. (2017) Measurement artefacts lead to false positives in the study of bird song in noise. Methods in Ecology and Evolution 8: 1617–1625.</p>

CC BY-SA 4.0
2022-10-14T11:58:15.190Z
I agree with this answer - in fact I was about to post the same 2 citations! @Thejasvi if you find that one of the answers satisfies your question, please could you mark the answer as "Accepted" - that helps us to see which questions are answered vs still open. Thanks!
Dan Stowell
CC BY-SA 4.0
2022-07-05T11:54:46.433Z
Hi @Henrik Brumm, pls upvote the question if you found it relevant?
Thejasvi
CC BY-SA 4.0
2022-07-05T11:41:54.650Z
2022-07-05T11:41:54.650Z
Henrik Brumm
<p>I've been struggling to measure the duration of my field-recorded bat calls well (with decent amounts of reverberation).
Manual measurements are common in my study field using spectrograms. Using a graphical user interface, the 'borders' of the bat call are manually outlined - and the duration is calculated.
I suspect manual measurements won't be reproducible within and across observers - but this method remains rather dominant in my field. Finding a proper tool and assessing its utility to my bat calls may take a long time however.</p>
<p>I tried looking for a study comparing the effects of using spectrograms on such measurements but failed to find any for bat calls. Should I still go ahead with spectrogram based manual measurements, can anyone point me to related literature?</p>

<analysis><measurement><spectrogram-annotation>
Manual measurements of calls from spectrograms. Should I be concerned with accuracy?
# Manual measurements of calls from spectrograms. Should I be concerned with accuracy?

(Asked by: username_0 on 2022-07-05)

I've been struggling to measure the duration of my field-recorded bat calls well (with decent amounts of reverberation).
Manual measurements are common in my study field using spectrograms. Using a graphical user interface, the 'borders' of the bat call are manually outlined - and the duration is calculated.
I suspect manual measurements won't be reproducible within and across observers - but this method remains rather dominant in my field. Finding a proper tool and assessing its utility to my bat calls may take a long time however.

I tried looking for a study comparing the effects of using spectrograms on such measurements but failed to find any for bat calls. Should I still go ahead with spectrogram based manual measurements, can anyone point me to related literature?

**Tags:** analysis, measurement, spectrogram-annotation


---

## 6 answers

### Answer by username_6 on 2022-07-05. Score: 12 | Accepted answer

Taking visual measurements from spectrograms (e.g. by manually placing a cursor on the screen, drawing a selection box in Raven software, etc.) is not an objective method and can result in severe measurement artefacts. On top of this, this practice may also lead to systematic observer biases.

These papers explain the problem in more detail:

Zollinger et al. (2012) On the relationship between, and measurement of, amplitude and frequency in bird song. Animal Behaviour 84: e1-e9.

username_6 et al. (2017) Measurement artefacts lead to false positives in the study of bird song in noise. Methods in Ecology and Evolution 8: 1617–1625.

> **Comments:**
> **username_0**: Hi @username_6, pls upvote the question if you found it relevant?  
> **username_7**: I agree with this answer - in fact I was about to post the same 2 citations! @username_0 if you find that one of the answers satisfies your question, please could you mark the answer as "Accepted" - that helps us to see which questions are answered vs still open. Thanks!  

---

### Answer by username_1 on 2022-07-05. Score: 12

As highlighted in this paper <https://besjournals.onlinelibrary.wiley.com/doi/full/10.1111/2041-210X.12766>, manual analysis where you click on a spectrogram is subjective, depends on your spectrogram settings and cannot be reproduced by others, so I highly recommend that you and anyone else avoid it:) - Use a robust measure like the D-duration instead. The D-duration is the duration of the call between the -10 dB end points of the signal envelope. One way of doing it on your waveform of call x in matlab is:

```
env=abs(hilbert(x));

%make hilbert envelope
thr=10^(-10/20)*max(env); %define -10 dB threshold
t=find(env>thr); %find samples above threshold
t=t(1:1+find(t(2:end)-t(1:end-1)>1)); % D duration in number of samples 
t/fs  %samples divided by sampling rate to get D duration in seconds

```


---

### Answer by username_2 on 2022-07-05. Score: 7

the accuracy of manual measurements may be an issue for you - or not. If trying to compare similar species with short duration calls, then a difference of 0.5ms could be important, but if comparing widely different calls, e.g a Myotis bat (2-4ms) against a Nyctalus (20-30ms), then small differences are unlikely to cause much problem.

One way to address the issue could be by using analytical functions to make the 'decision' for you on where to draw the lines. You can do this using the seewave::timer() function within R. As an example, try this (taken, of course, from Jerome Sueur's book):

```
library(seewave)  
data(orni)  
timer(orni, threshold=5, msmooth = c(50,0), envt="hil")

```

Which gives you this output, in graphical form. Or you can save the output as an object to extract the numerical information.

[![enter image description here](https://i.sstatic.net/dMHpK.png)](https://i.sstatic.net/dMHpK.png)

> **Comments:**
> **username_0**: Hi @username_2, Could you please add a reference to the book mentioned in the answer, also pls upvote the question if you found it relevant?  

---

### Answer by username_3 on 2022-07-06. Score: 3

Raven has a set of "robust" signal measurements based on peak frequency contours which are less susceptible to annotator bias; they did a presentation comparing these with traditional measurements that is archived here -

<https://ravensoundsoftware.com/knowledge-base/robust-signal-measurements/>

> **Comments:**
> **username_4**: The theoretical underpinning of Raven's "robust signal measurements" can be found in [Fristrup and Watkins (1992)](https://apps.dtic.mil/sti/pdfs/ADA246578.pdf) and [Fristrup and Watkins (1994)](https://apps.dtic.mil/sti/pdfs/ADA289294.pdf).  

---

### Answer by username_0 on 2022-07-05. Score: 3

Depends on your accuracy. If you'd like a 'quick and dirty' answer, then go ahead - even though the results may not be all that accurate. You could try to quantify the amount of variation caused within/across observers using synthetic signals (if using Python, `scipy.signal.chirp]` comes to the rescue. See [docs here](https://docs.scipy.org/doc//scipy-1.4.0/reference/generated/scipy.signal.chirp.html) ).

My own experience is that there's likely a good tool out there which will suit your use-case. The time spent finding the correct tool is typically time well spent in my own experience.


---

### Answer by username_5 on 2022-07-06. Score: 1

One possibility you could use is simply to try to quantify that variation within and across observers. Ensure that each observer is exposed to the same recording multiple times across their review efforts but do not make it clear to them that it is a duplicate, and evaluate the variation on the back end. You can do the same for between-reviewer agreement. It may turn out that for your particular use case and your set of reviewers, you have an acceptable level of variation.


---

