[OpenTRV-dev] Audio/FFT thoughts

Damon Hart-Davis EMAIL ADDRESS HIDDEN
Tue Jun 11 11:09:13 BST 2013


Yep, OK, I think I had just Googled my way to IIR, thanks!

Yes, I do everything fixed point.

(Been having fun with stochastic rounding on my exponential smoothed stats!)

Rgds

Damon

On 11 Jun 2013, at 10:56, Mike Stirling wrote:

> Look up "infinite impulse response filter". You may be able to implement a bandpass function as your decimation filter, although with IIR you can't skip the calculation of the "in-between" samples like you can with FIR.
> 
> Beware: IIR filters are sensitive to errors in the coefficients. You might want to do a simulation in <your preferred mathematical package> first. You should implement it using fixed-point arithmetic as floats will be too expensive.
> 
> Mike
> 
> ----------------original message-----------------
> From: "Damon Hart-Davis" EMAIL ADDRESS HIDDEN 
> To: "Closed list for developer discussions" EMAIL ADDRESS HIDDEN 
> Date: Tue, 11 Jun 2013 10:07:09 +0100
> -------------------------------------------------
> 
> 
>> Hi,
>> 
>> OK, *that's* a good idea, thanks!
>> 
>> I would like to screen out radiator gurglings, etc, which was why I thought that I 
>> might need more precision.
>> 
>> But maybe I can do some simple DC removal and band-pass filtering.
>> 
>> Is there anything as simple as the exponential filtering to do the high-pass 
>> element in software?
>> 
>> Rgds
>> 
>> Damon
>> 
>> 
>> 
>> On 11 Jun 2013, at 09:51, Mike Stirling wrote:
>> 
>>> What are you planning on doing in the frequency domain? If you have already 
>>> filtered to 4 kHz as part of your decimation step then why not just integrate the 
>>> square of your 64 samples to give you an indication of voice band power?
>>> 
>>> Mike
>>> 
>>> ----------------original message-----------------
>>> From: "Damon Hart-Davis" EMAIL ADDRESS HIDDEN 
>>> To: "Closed list for developer discussions" 
>>> EMAIL ADDRESS HIDDEN 
>>> Date: Tue, 11 Jun 2013 08:40:30 +0100
>>> -------------------------------------------------
>>> 
>>> 
>>>> Hi,
>>>> 
>>>> Some initial thoughts on audio occupancy detection with the ATmega, 
>>>> listening 
>>>> out for voice (of a human or their radio/TV being on). I have done no 
>>>> feasibility 
>>>> testing yet.
>>>> 
>>>> My current plan is to (~8-bit) sample with the ADC at 16kHz, in bursts of 
>>>> about 8ms 
>>>> (between RTC ticks), using a simple exponential filter to reduce to 8kHz 
>>>> samples. Take 64 samples which should allow me to examine frequencies in 
>>>> the 4kHz 
>>>> to 500Hz band which probably covers most of "voice".
>>>> 
>>>> 1) I think that I can probably achieve this sampling rate even at 1MHz CPU 
>>>> clock 
>>>> (default Arduino ADC sample rate at 16MHz CPU clock seems to be 9600Hz and I 
>>>> have a 
>>>> prescaler to play with).
>>>> 
>>>> 2) I only intend to listen when I'm otherwise in danger of thinking the room 
>>>> 
>>>> unoccupied, and in any case on a low duty cycle to save juice (eg one 8ms 
>>>> sample 
>>>> block per minute or less for example).
>>>> 
>>>> 3) I have headroom to boost the CPU speed dynamically to 4MHz if I need to (I 
>>>> already 
>>>> dynamically lower it when I need to).
>>>> 
>>>> What is hideously silly about this plan already?
>>>> 
>>>> Rgds
>>>> 
>>>> Damon
>>>> 
>>>> 
>>>> _______________________________________________
>>>> OpenTRV-dev mailing list
>>>> EMAIL ADDRESS HIDDEN 
>>>> http://lists.opentrv.org.uk/listinfo/opentrv-dev
>>>> 
>>> 
>>> -- 
>>> 
>>> 
>>> 
>>> _______________________________________________
>>> OpenTRV-dev mailing list
>>> EMAIL ADDRESS HIDDEN 
>>> http://lists.opentrv.org.uk/listinfo/opentrv-dev
>>> 
>> 
>> _______________________________________________
>> OpenTRV-dev mailing list
>> EMAIL ADDRESS HIDDEN 
>> http://lists.opentrv.org.uk/listinfo/opentrv-dev
>> 
> 
> -- 
> 
> 
> 
> _______________________________________________
> OpenTRV-dev mailing list
> EMAIL ADDRESS HIDDEN
> http://lists.opentrv.org.uk/listinfo/opentrv-dev
> 



More information about the OpenTRV-dev mailing list