-
Notifications
You must be signed in to change notification settings - Fork 900
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Feature Request: Port eSpeak NG to iOS 16, and expose it to VoiceOver using AVSpeechSynthesisProviderAudioUnit. #1291
Comments
Well please! Seriously I'll give 100 € (via PayPal), to the dev who makes this a reality provided he/she also manages to include the NVDA variants and the Libsonic or what it was called, so I can finally bring my iPhone's VoiceOver speech on par with the speed and low latency of my Windows XP computers. |
Hi @robin24, |
I'd certainly appreciate espeak on MacOS very much.
…On Tue, Sep 13, 2022 at 4:53 AM Quin ***@***.***> wrote:
Hi @robin24 <https://github.com/robin24>,
How were you testing building this for iOS? I just built for Mac and it
built flawlessly, and works. Should we get a basic
AVAudioSpeechSynthesisUnitProvider working on MacOS Ventura (assuming it
supports it), and then port it to iOS?
—
Reply to this email directly, view it on GitHub
<#1291 (comment)>,
or unsubscribe
<https://github.com/notifications/unsubscribe-auth/AACWCG7J3IUOG4AZNKIKN2TV57UCFANCNFSM563IQMOA>
.
You are receiving this because you are subscribed to this thread.Message
ID: ***@***.***>
|
Hey @TheQuinbox! That's super cool, how did you get that to work?
Getting this to work on macOS first sounds like the best approach though, as building for iOS probably requires some sort of cross compilation, I believe Xcode can do this or perhaps cmake on the command line as well, but that's probably a lot more involved I suppose. |
Hi @robin24,
I got a functional espeak lib that talks! |
Any progress with this? Having ESpeak with VoiceOver on iPhone would be a gamechanger for many blind people.
|
Hello, |
sinz the creator dont care about sapi. the hopes are small |
What does this have to do with sapi?
Von: mjonsson1986 ***@***.***
Gesendet: Mittwoch, 19. Oktober 2022 12:20
An: espeak-ng/espeak-ng ***@***.***>
Cc: XP-Fan ***@***.***>; Comment ***@***.***>
Betreff: Re: [espeak-ng/espeak-ng] Feature Request: Port eSpeak NG to iOS 16, and expose it to VoiceOver using AVSpeechSynthesisProviderAudioUnit. (Issue #1291)
sinz the creator dont care about sapi. the hopes are small
—
Reply to this email directly, view it on GitHub<#1291 (comment)>, or unsubscribe<https://github.com/notifications/unsubscribe-auth/AKEBHTMEYOJ2AU6BS26BLGDWD7DLLANCNFSM563IQMOA>.
You are receiving this because you commented.Message ID: ***@***.***>
|
I can contribute to this issue and provide iOS/macOS framework that wraps espeak-ng into AVSpeechSynthesisProviderAudioUnit. But, for sure, espeak-ng is GPL-licensed, so somewho should open and maintain entire project source, including wrapper and configuration UI. And so maintain AppStore release if and when it come out officially. |
Well yeah, please, please please do: I’m waiting for ESpeak ever since the first day I do have an iPhone. Seriously: All the commercial stuff out there (at least those things whose ship with Apple devices) just can’t get fast enough for me to be able to sanely work with… Well yeah right we also need some basic configuration UI so that I can set it to the NVDA variant and enable the additional speedboost.
|
The first attempt to build swift package with libsonic and libespeak-ng was successful. Let's start a wrapper. |
Sounds promising, thank you very much in advance, it’s really appreciated. I’m looking forward…
|
So we can ship data bundle and compile it AOT. Helps to make #1291
On e.g. iOS it may be very long. Helps to make #1291
<!--
/* Font Definitions */
@font-face
{font-family:"Cambria Math";
panose-1:2 4 5 3 5 4 6 3 2 4;}
@font-face
{font-family:Calibri;
panose-1:2 15 5 2 2 2 4 3 2 4;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
{margin:0cm;
font-size:11.0pt;
font-family:"Calibri",sans-serif;}
a:link, span.MsoHyperlink
{mso-style-priority:99;
color:blue;
text-decoration:underline;}
.MsoChpDefault
{mso-style-type:export-only;}
@page WordSection1
{size:612.0pt 792.0pt;
margin:70.85pt 70.85pt 70.85pt 70.85pt;}
div.WordSection1
{page:WordSection1;}
-->You meen espeak voiceover compatible? Skickades från E-post för Windows Från: Yury PopovSkickat: den 28 oktober 2022 17:44Till: espeak-ng/espeak-ngKopia: mjonsson1986; CommentÄmne: Re: [espeak-ng/espeak-ng] Feature Request: Port eSpeak NG to iOS 16, and expose it to VoiceOver using AVSpeechSynthesisProviderAudioUnit. (Issue #1291) Looks like test app working. Will upload initial version after some cleanup...—Reply to this email directly, view it on GitHub, or unsubscribe.You are receiving this because you commented.Message ID: ***@***.***>
|
Sounds promising really. Please make sure to share the testflight link with me once it’s ready, and your paypal if it works.
|
mjonsson1986 Your message is not readable on a plain email client. I do see Office HTML like sourcecodes.
|
@ XP-Fan thats because i answer by email in thunderbird |
I not do it for money but for idea. Open source software should help people. I have received many messages with thanks from blind people, it's unusual, it's... pleasant?) If it does matter, send a donation to any fund (medical or open-source) for your choice. |
please give me an test flight link when it is ready |
Of course |
eh? i assume this is for mac too? |
You are an awesome man.
|
Hey, Sorry I haven't commented here for a while, been busy job hunting and so I needed to put this on the back burner for some time. Thanks again for your wonderful work Yuri and I hope we get to work together on this cool project. |
@djphoenix wow, amazing news! Is your code already in a public repo somewhere? |
@robin24 of course, all code is open now. |
hope the app can be running on both mac and ios? |
It work on macOS, but voiceover extension is only since 13.0 which supported with XCode 14.1. Unfortunately it is not released yet, it is still RC2. I can't install it because I need production (stable) environment on small macbook SSD... I will test and release macOS app as xcode 14.1 release happens. |
why release 2 separate apps? mac os 11 and above can runios apps.. or do you meen 2 separate: 1 for m1 mac and ios. and 1 for intel maybe |
Hey @djphoenix, Thanks so much for setting up the repos and sharing the links here! I've now cloned the project, changed the team and bundle ID in Xcode to match with my own dev account details and now I'm able to build and run the app, yay! However, I'm running into an entitlement error when trying to synthesize text with the following in the debugger: container_create_or_lookup_app_group_path_by_app_group_identifier: client is not entitled Looking through the list of entitlements I can only find some related to macOS Sandbox, when you have a sec could you let me know which entitlements you included in the project so I can check what got lost? Thanks! |
@robin24 I think that this is because |
I'm not sure how iOS app extension will work on macOS. Also Intel macs are wide used. And I think that separate app is better anyway. |
@djphoenix Right, what's weird though is I already did that and set up the app groups for the main app as well as the extension, yet I keep running into this entitlement error... |
Make sure to update UserDefault's ID according to your app group |
@djphoenix Ah yes, found the issue! There are a couple hardcoded references to "group.dj.phoenix.espeak-ng" in the code, once I changed them for my group identifier it all worked as expected, awesome!!! It would probably be best to change that code to construct the correct ID from the current bundle identifier at runtime so that it doesn't need to be changed manually when someone other than you wants to build this locally, I can take a look at that. |
K’mon, guys, that’s first working version, and make it work well is long roadmap. Keep in mind that it’s one week old. Of course I will clean it up and update.
As always, PRs are welcome ) |
That becomes a chat… since we have separate repository with iOS app, maybe we should move a discussions to its “issues”, right? |
@djphoenix Sorry, I wasn't trying to come across as impatient or criticizing your work in any way, only pointed this out because it's somewhat hard to catch when building the project for the first time, plus the debugger isn't helpful either in this case and just shows an entitlement error without much context. I think it's really impressive how far this has come in a super short time, even including support for all the languages and voices that the synthesizer supports as far as I can tell. Also you're right that we should move further discussion to the new repos, let's maybe keep this one around until the TestFlight submission is approved so we can share the link with everyone following along. Again, sorry for the misunderstanding! |
Oh, of course all OK. My english isn't perfect, and I never want to offend anyone. We all are doing the things to get the open world better. |
Let the show begin. |
Wow, that's great! @jwoo-msft and I tried our hand at porting this a while back. We got it running in a test app (as you did) but didn't get the system/VoiceOver integration going. I've installed your testFlight app, but eSpeak doesn't appear in VoiceOver settings. Is it supposed to at this point? |
@codeofdusk I had exactly the same issue as you at first, but I did the following and that caused it to appear. There are some bugs I will report later after additional testing, but globally, this is awesome! Thanks so much @djphoenix |
@nidza07 I've tried rebooting several times, but it still isn't displayed. |
Sorry that didn't help, you must be running into a different problem in that case. The only thing worth pointing out is that the API is iOS 16 exclusive, but I am assuming you're already aware of that. Hopefully a solution is found... |
It seems that this is indeed currently a little buggy. After using it for a while, my ESpeak also completely disappeared, but for me it was enough to open the ESpeak NG app again and it appeared once more. |
this app installs on m1 mac. but no voices show up in voiceover |
@mjonsson1986 keep patient for a bit, I think xCode 14.1 will be released in this week, and I complete a port. |
@codeofdusk @nidza07 here a some bugs of course, and I have caught your issue with missing voiceover... once. I can't reproduce and so debug it... I think a lot of bugs will disappear after code cleanup and refactoring. |
I notes all discussions in iOS project issues. As TestFlight available now, I think that we may close this one. |
Nudge: its been done but I can't see this in the current live version of the app.. just saying - it would be helpful if someone would update it :) |
@willwade The current version of the application works fine for me. Sometimes after the first installation it may take a few minutes for the voice to show though, but as long as you enabled the language you want inside VoiceOver languages section of the app, you should see the ESpeak voices under that language in either VoiceOver or spoken content accessibility settings, depending on what you want to use it for. |
Totally unrelated but since I got those mails: Is there ESpeak NG for SAPI 5 actually?
|
Well my bad! I do apologise! it is a bit, well flaky, at times. (it seems to work better in third party apps than apples own Speak Content settings..). Awesome stuff. Thanks :) |
Summary
iOS 16 Beta introduces AVSpeechSynthesisProviderAudioUnit, which should enable the integration of 3rd-party speech synthesizers into the VoiceOver screenreader, as well as Speak Screen and other assistive features that rely on speech synthesis.
With this in mind, it would be awesome if eSpeak NG, given its strong popularity within the screenreader community, could be ported to iOS and macOS.
Steps required to make this work
As far as I can tell, three main steps would be required to pull this off, with step 1 and 2 probably being the most work intensive:
The text was updated successfully, but these errors were encountered: