Thread overview
TTS Synthesis: D and vibe.d in Action
Apr 12, 2016
Chris
Apr 12, 2016
jamonahn
Apr 12, 2016
Chris
Apr 12, 2016
wobbles
Apr 12, 2016
Chris
Apr 13, 2016
Andre Polykanine
Apr 14, 2016
Chris
Apr 14, 2016
Ali Çehreli
Apr 15, 2016
Chris
April 12, 2016
Hi,

Just to inform you that we successfully use D and vibe.d for two things:

1. an NVDA[1] screen reader plugin:

http://www.abair.ie/nvda/

It is still version 0.6 beta but it is already being used by visually impaired people.

2. a web version of the text-to-speech synthesizer that is now used on the website of the Department of Arts, Heritage and the Gaeltacht in Ireland:

http://www.ahg.gov.ie/ga/ [2]

The web service is based on vibe.d and will be extended for more use cases (for example on the fly synthesis in the "cloud"). It is also still beta. The system works quite fast (the delay is due to a timeout in the JS, i.e. it doesn't send the request immediately - which will be optional in future versions).

[1] http://www.nvaccess.org/
[2] It's the green bubble that says "abair.ie" at the bottom of the page, once you click on it you'll see some controls, press on the bubble that says "a" to activate it. It will read out whatever is under the cursor (after a short delay which is in the JS).
April 12, 2016
On Tuesday, 12 April 2016 at 10:22:03 UTC, Chris wrote:
...
> http://www.ahg.gov.ie/ga/ [2]

Just some confusion on my part -- this is the link to try it out.

Congrats!  What a wonderful inspiration!
April 12, 2016
On Tuesday, 12 April 2016 at 10:22:03 UTC, Chris wrote:
> Hi,
>
> Just to inform you that we successfully use D and vibe.d for two things:
>
> [...]

Great to see some fellow Irish D users!
April 12, 2016
On Tuesday, 12 April 2016 at 14:37:52 UTC, jamonahn wrote:
> On Tuesday, 12 April 2016 at 10:22:03 UTC, Chris wrote:
> ...
>> http://www.ahg.gov.ie/ga/ [2]
>
> Just some confusion on my part -- this is the link to try it out.
>
> Congrats!  What a wonderful inspiration!

Thanks. I hope that more people and organizations will use it down the road.
April 12, 2016
On Tuesday, 12 April 2016 at 17:41:32 UTC, wobbles wrote:
> On Tuesday, 12 April 2016 at 10:22:03 UTC, Chris wrote:
>> Hi,
>>
>> Just to inform you that we successfully use D and vibe.d for two things:
>>
>> [...]
>
> Great to see some fellow Irish D users!

Good to know I'm not the only one! I was already wondering how many people in Ireland actually use D! :-) It's either considered "exotic" or "never heard of".
April 13, 2016
Hello Chris,

CvDda> Just to inform you that we successfully use D and vibe.d for two CvDda> things:

This is just overwhelming!
How do you make bindings to NVDA API which is in Python?
I'm  not  an  NVDA  user (I'm using JAWS, if it matters), but I'm still
very interested in the technology.


Andre.

April 14, 2016
On Wednesday, 13 April 2016 at 19:09:46 UTC, Andre Polykanine wrote:
> Hello Chris,
>
> CvDda> Just to inform you that we successfully use D and vibe.d for two CvDda> things:
>
> This is just overwhelming!
> How do you make bindings to NVDA API which is in Python?
> I'm  not  an  NVDA  user (I'm using JAWS, if it matters), but I'm still
> very interested in the technology.
>
>
> Andre.

Hi Andre,

What is CvDda>? There are loads of different results in my search engine.

To answer your question: in Python you can load DLLs via Python's ctypes. You just load the DLL via `CDLL()` or `cdll.LoadLibrary()`. It's relatively easy to make a Windows DLL in D. To make it accessible for Python's C-types, just expose your functions like so

extern (C) {
 export void myFunction(){}
}

Of course, any arguments (at least on Windows) or return types should be C-style, i.e. `const char*` instead of `string`. To Python it all looks like C, it doesn't know about D. I've seen a plug-in written in Scheme and it is also loaded via Python's `CDLL()`.

To bind a Python function to your DLL just do something like this (assuming you're in a class):

// Load
self.myDLL = CDLL("path/to/dll")

If your function is void, just call it using

// call void function in DLL
self.myDLL.myFunciton();

If it returns something, you should first define the return value:

// assign return type to function in Python
self.myDLL.getError.restype = c_char_p

To pass arguments, it's best to convert Python to C-types like so:

// pass argument as C-type
self.myDLL.myFunction(c_char_p("text"))

It's all in the Python docs at https://docs.python.org/2/library/ctypes.html.

April 14, 2016
On 04/14/2016 03:57 AM, Chris wrote:

> What is CvDda>?

Abbreviation of your name by Andre's email program: "Chris via Digitalmars-d-announce". :)

Ali

April 15, 2016
On Thursday, 14 April 2016 at 17:55:40 UTC, Ali Çehreli wrote:
> On 04/14/2016 03:57 AM, Chris wrote:
>
>> What is CvDda>?
>
> Abbreviation of your name by Andre's email program: "Chris via Digitalmars-d-announce". :)
>
> Ali

Oh deary me! That was a tough one for me :) Type CvDda into your search engine, the results are confusing.