D for Speech and Signal Processing
Chris
wendlec at tcd.ie
Fri Nov 29 11:00:06 PST 2013
On Friday, 29 November 2013 at 16:58:47 UTC, Baz wrote:
> On Thursday, 28 November 2013 at 10:30:36 UTC, Chris wrote:
>> There are voice analysis and speech processing toolkits like
>> Covarep and Voicebox (see links below) that were coded in
>> Matlab, because they were originally only prototypes. There
>> has been talk of porting them to C++. My first thought, as you
>> might imagine, was why not use D? However, I don't know if
>> there are any performance issues, especially for real time
>> systems (in speech recognition), talking about GC, or in fact
>> any other issues (number grinding etc.).
>>
>> A lot of the analysis tools are based on some sort of HMM
>> (http://en.wikipedia.org/wiki/Hidden_Markov_model) and I think
>> D could handle that elegantly.
>>
>> https://github.com/covarep/covarep
>> http://www.ee.ic.ac.uk/hp/staff/dmb/voicebox/voicebox.html
>
> Hi, I have a little experience in dsp programming using oop
> languages, so I'll try to give you my mind, but my mind is more
> related to entertainment dsp softwares (asio, vst, etc...).
>
>> talking about GC
> In "pseudo" real time (RT) audio (one or many buffer are
> overlapped) you are a in a loop (interesting example is
> bufferswitch in asio). It's time critical and performance
> critical, so you'll never create a class neither allocate a
> buffer here...The idea is: what does trigger the GC: memory
> allocation and dynamic class instance creation. It's like in
> GUI programming: you don't destroy and recreate many objects in
> the "resize/realign" message handler...So the GC problem is
> solved: there is no GC problem because in RT dsp you won't do
> something stupid that'll trig a GC pass.
>
> In speech recognition you'll mostly use some frequency-domain
> technics (not to name the fft), so basically if you don't want
> to trigger a GC pass, don't use build-in array and make your
> own array using alloc/malloc/free. For the classes it's the
> same, you can still make your own class allocator/deallocator,
> like specified in the manual (even if they say it's
> deprecated). With user managed classes and array you'll avoid
> most of the GC passes...But it doesn't mean that the most
> important stuff is: not to allocate in the audio buffer loop.
Thanks. That's very interesting, I'll look into it.
More information about the Digitalmars-d
mailing list