Closed
Bug 1086545
Opened 9 years ago
Closed 9 years ago
[AccessFu] Speech sometimes gets interrupted when swiping and it is supposed to speak the newly focused item
Categories
(Core :: Disability Access APIs, defect)
Tracking
()
People
(Reporter: MarcoZ, Assigned: eeejay, NeedInfo)
References
Details
(Keywords: regression)
Attachments
(4 files, 1 obsolete file)
236.41 KB,
text/plain
|
Details | |
9.79 MB,
video/mp4
|
Details | |
9.99 KB,
text/plain
|
Details | |
5.50 KB,
patch
|
padenot
:
review+
bajaj
:
approval-mozilla-b2g37+
|
Details | Diff | Splinter Review |
I first saw this in a build from October 20 which I was able to flash onto my Flame after a week of pause or so. Two scenarios: Scenario 1: 1. Turn on screen reader. 2. Swipe through items on the home screen. Don't wait for speech to finish speaking, just swipe, let speech start, then swipe again repeatedly. Observation: Sometimes, speech gets interrupted, but doesn't resume when speaking the newly focused item. The sound for the newly focused item is heard, but speech doesn't pick up. It's as if it is interrupting itself for too long to be able to pick up speaking the new item. Scenario 2: 1. Double-tap the address bar at the top. 2. Start exploring the keyboard. Observation: Sometimes when exploring from one letter to the next while the other might still be spoken, the newly focused letter is not spoken. Both above scenarios used to work reliably, e. g. speech interrupting itself and speakin the new item. This is a recent regression.
Reporter | ||
Comment 1•9 years ago
|
||
[Tracking Requested - why for this release]: It's a regression on the Flame introduced in the 2.2 cycle that should be fixed for release. It affects the screen reader when navigating the UI on a Flame device.
blocking-b2g: --- → 2.2?
status-b2g-v2.2:
--- → affected
tracking-b2g:
--- → ?
Flags: needinfo?(yzenevich)
Flags: needinfo?(eitan)
Reporter | ||
Comment 2•9 years ago
|
||
Eitan and Yura, have either of you also been able to reproduce this? Or seen it at all when you were testing something else?
Comment 3•9 years ago
|
||
(In reply to Marco Zehe (:MarcoZ) from comment #2) > Eitan and Yura, have either of you also been able to reproduce this? Or seen > it at all when you were testing something else? I tried this and could not reliably notice significant issues. I did notice some crashes before related to audio channel and power manager issues. After speaking with Marco, we'll try to look into this issue deeper next week in Portland.
Flags: needinfo?(yzenevich)
Comment 5•9 years ago
|
||
Hi Marco, Are you still planning to work on this bug? Triage: broken function, regression
Reporter | ||
Comment 6•9 years ago
|
||
I reported it, and can still reproduce it in latest nightly builds on the Flame device, but not on ZTE Open running a community build of Nightly. Someone else will have to work on actually debuggingand fixing this, though.
Flags: needinfo?(mzehe)
Comment 7•9 years ago
|
||
I don't know what exactly the qawanted is for but let's get a branch check here.
Updated•9 years ago
|
QA Contact: bzumwalt
Comment 8•9 years ago
|
||
Issue DOES occur on Flame 2.1 and 3.0 With screen reader enabled, scrolling through homescreen icons occasionally skips speaking app name when scrolling continuously. Also skips speaking some letters when scrolling through keyboard. This issue is easy to reproduce and usually occurs in 10 or less focus changes. Device: Flame 2.1 Build ID: 20150205001711 Gaia: 17bf14f12e43043654498330d610d469b8b55e64 Gecko: bdebcc47ec7a Gonk: e7c90613521145db090dd24147afd5ceb5703190 Version: 34.0 (2.1) Firmware Version: v18D-1 User Agent: Mozilla/5.0 (Mobile; rv:34.0) Gecko/34.0 Firefox/34.0 Device: Flame 3.0 Master Build ID: 20150205010209 Gaia: 2b83a6d5d1185a438b5bbd287497ac2743b501db Gecko: 34a66aaaca81 Gonk: e7c90613521145db090dd24147afd5ceb5703190 Version: 38.0a1 (3.0) Firmware Version: v18D-1 User Agent: Mozilla/5.0 (Mobile; rv:38.0) Gecko/38.0 Firefox/38.0 Issue does NOT occur on Flame 2.0 Scrolling focus through homescreen items and keyboard letters with screen reader enabled does not skip speaking any focused item when scrolling continuously. Device: Flame 2.0 Build ID: 20150205000205 Gaia: 2989f2b2bd12fcc0e9c017d2db766e76a55873b8 Gecko: 69057b33ef5b Gonk: e7c90613521145db090dd24147afd5ceb5703190 Version: 32.0 (2.0) Firmware Version: v18D-1 User Agent: Mozilla/5.0 (Mobile; rv:32.0) Gecko/32.0 Firefox/32.0
QA Whiteboard: [QAnalyst-Triage?]
status-b2g-v2.0:
--- → unaffected
status-b2g-v2.1:
--- → affected
status-b2g-master:
--- → affected
Flags: needinfo?(ktucker)
Keywords: qawanted
Comment 9•9 years ago
|
||
Let's get a regression window then.
QA Whiteboard: [QAnalyst-Triage?] → [QAnalyst-Triage+]
Flags: needinfo?(ktucker)
Keywords: regressionwindow-wanted
Comment 10•9 years ago
|
||
I'm finding the broken window.
Comment 11•9 years ago
|
||
Regression Window: I can repro this bug on the earliest Flame v2.1 (2014-10-08-16-12-01). See attachments: verify_v2.1.MP4 and logcat_v2.1_0509.txt Reproduce rate: 5/5 Repro STR: 1.Enable screen reader in Settings. 2.Go to Homescreen. 3.Swipe through items on the homescreen. Don't wait for speech to finish speaking, just swipe, let speech start, then swipe again repeatedly. **Speech gets interrupted when user scroll on the next icon and it will continue to speak the newly icon.(Please see video) 4.Tap on Rocket bar and start exploring the keyboard. **When exploring from one letter to the next letter while the other might still be spoken, the newly focused letter will continue to speak. **Sometimes,when long tap a letter on the keyboard,some icons will disappear or cut off on the homescreen.(please see video and log) Flame earliest 2.1 build: Build ID 20141008161201 Gaia Revision 7ef2e1e59637a34ca4489c329b3bdee93df3ac6c Gaia Date 2014-10-08 12:32:21 Gecko Revision https://hg.mozilla.org/releases/mozilla-b2g34_v2_1/rev/e3d495eb85c6 Gecko Version 34.0a2 Device Name flame Firmware(Release) 4.4.2 Firmware(Incremental) eng.cltbld.20150208.050436 Firmware Date Sun Feb 8 05:04:47 EST 2015 Bootloader L1TC000118D0
Keywords: regressionwindow-wanted
Comment 12•9 years ago
|
||
Hi Reporter, Could you help to confirm above steps and results in Comment 11? Thank you very much?
Flags: needinfo?(mzehe)
Comment 13•9 years ago
|
||
Comment 14•9 years ago
|
||
Updated•9 years ago
|
QA Whiteboard: [QAnalyst-Triage+] → [QAnalyst-Triage+][MGSEI-Triage+]
Reporter | ||
Comment 15•9 years ago
|
||
Yes, that is basically what I'm seeing. Note that I cannot confirm visuals, since I am totally blind and can only *hear* that something is wrong. But the steps sound quite right.
Flags: needinfo?(mzehe)
Assignee | ||
Comment 16•9 years ago
|
||
I did some more digging, and this seems to be some kind of race condition in our MediaGraph code. Paul, to reproduce, you need to turn on the screen reader[1] and then in the homescreen swipe and move through the icons quickly. Eventually you will hear a tick that is not followed by any speech. https://wiki.mozilla.org/Accessibility/Mobile/ScreenReader
Flags: needinfo?(padenot)
Assignee | ||
Comment 17•9 years ago
|
||
I think the logging I attached might give a good hint. The 'Music2 link' utterance didn't happen, but the ones above worked.
Comment 18•9 years ago
|
||
Yeah I think what happened is that there was a little window of time where there were 0 streams with an audio track, so the graph switched to using a system thread to save battery, and then it found it could shut down, so it did that. This never happens with Web Audio API because we have always have a stream where all the other streams are connected to (the AudioDestinationNode), I think you should try to replicate this design: keep a stream with an audio track, that would have the AudioOuput, and then, when you need to play a sound, connect your WebSpeech stream to this new stream. This will assure that the graph always uses a audio thread to run, and keep the latency minimal as a nice bonus.
Flags: needinfo?(padenot)
Updated•9 years ago
|
Assignee: nobody → yzenevich
Comment 19•9 years ago
|
||
I already have a WebAudio patch so I will take this one.
Assignee | ||
Comment 20•9 years ago
|
||
I am not familiar with the media API, am I in the right direction? I think I notice better latency, and I can't reproduce this bug.
Attachment #8570195 -
Flags: feedback?(padenot)
Comment 21•9 years ago
|
||
Comment on attachment 8570195 [details] [diff] [review] Possible solution. Review of attachment 8570195 [details] [diff] [review]: ----------------------------------------------------------------- That ought to work, but this really looks like a _perfect_ use case for the Web Audio API.
Attachment #8570195 -
Flags: feedback?(padenot) → feedback+
Assignee | ||
Comment 22•9 years ago
|
||
(In reply to Paul Adenot (:padenot) from comment #21) > Comment on attachment 8570195 [details] [diff] [review] > Possible solution. > > Review of attachment 8570195 [details] [diff] [review]: > ----------------------------------------------------------------- > > That ought to work, but this really looks like a _perfect_ use case for the > Web Audio API. I'm not really sure what you mean. How would we use a JS API here? Just instantiate an AudioContext in cpp? That seems like a bit of overkill, I can't find any examples of where that is used, are there any? If we do this, we would be using the global top-level window as a parent because of the architecture of the voice service. Are there any battery/performance considerations for having a permanent stream like you suggest in comment #18, and like I implemented? Should there be some kind of timeout?
Flags: needinfo?(padenot)
Comment 23•9 years ago
|
||
(In reply to Eitan Isaacson [:eeejay] from comment #22) > (In reply to Paul Adenot (:padenot) from comment #21) > > Comment on attachment 8570195 [details] [diff] [review] > > Possible solution. > > > > Review of attachment 8570195 [details] [diff] [review]: > > ----------------------------------------------------------------- > > > > That ought to work, but this really looks like a _perfect_ use case for the > > Web Audio API. > > I'm not really sure what you mean. How would we use a JS API here? Just > instantiate an AudioContext in cpp? That seems like a bit of overkill, I > can't find any examples of where that is used, are there any? If we do this, > we would be using the global top-level window as a parent because of the > architecture of the voice service. It's not used, but it should work, you'd just bypass the bindings, right? > Are there any battery/performance considerations for having a permanent > stream like you suggest in comment #18, and like I implemented? Should there > be some kind of timeout? There are battery and performance implications, basically, there will be a thread running all the time, and the audio hardware will be awake until you tell the MediaStreamGraph to pause. Work in bug 1094764 can be useful, here, but, you can implement a timeout if you want, yes, it's just a matter of removing the "sink" stream on timeout.
Flags: needinfo?(padenot)
Updated•9 years ago
|
Assignee: yzenevich → nobody
Comment 24•9 years ago
|
||
Sheila, can you help to find a best fit from platform team to own this bug? Thank you.
Flags: needinfo?(smooney)
Comment 25•9 years ago
|
||
So, what's the next action? Ready to review or? And, Eitan, can you be the owner for this bug? Thanks.
Flags: needinfo?(eitan)
Assignee | ||
Updated•9 years ago
|
Assignee: nobody → eitan
Flags: needinfo?(eitan)
Comment 26•9 years ago
|
||
This bug has been idle for a long time, and it's marked blocking-b2g=2.2+, can we make it before 4/6 FC?
Flags: needinfo?(eitan)
Assignee | ||
Comment 27•9 years ago
|
||
Sorry, I was researching alternatives. And nothing came up. I'm going to double check this patch, and prepare it for review.
Flags: needinfo?(eitan)
Assignee | ||
Comment 28•9 years ago
|
||
The input port count does not accumulate and goes back to 0 after a nsSpeechTask is destroyed, so I assume it is not keeping the thread alive, and we are not killing battery.
Attachment #8570195 -
Attachment is obsolete: true
Attachment #8586934 -
Flags: review?(padenot)
Comment 29•9 years ago
|
||
Comment on attachment 8586934 [details] [diff] [review] Bind speech task streams to a parent stream held by voice registry. Review of attachment 8586934 [details] [diff] [review]: ----------------------------------------------------------------- ::: dom/media/webspeech/synth/nsSpeechTask.cpp @@ +162,2 @@ > > // XXX: Is there setup overhead here that hurtls latency? You can probably remove this.
Attachment #8586934 -
Flags: review?(padenot) → review+
Assignee | ||
Comment 30•9 years ago
|
||
https://hg.mozilla.org/integration/mozilla-inbound/rev/717878ab4b45
https://hg.mozilla.org/mozilla-central/rev/717878ab4b45
Status: NEW → RESOLVED
Closed: 9 years ago
status-firefox40:
--- → fixed
Resolution: --- → FIXED
Target Milestone: --- → mozilla40
Assignee | ||
Comment 32•9 years ago
|
||
Comment on attachment 8586934 [details] [diff] [review] Bind speech task streams to a parent stream held by voice registry. NOTE: Please see https://wiki.mozilla.org/Release_Management/B2G_Landing to better understand the B2G approval process and landings. [Approval Request Comment] Bug caused by (feature/regressing bug #): User impact if declined: Speech gets clipped when navigating quickly with screen reader. Testing completed: Yes. Risk to taking this patch (and alternatives if risky): Low String or UUID changes made by this patch: No.
Attachment #8586934 -
Flags: approval-mozilla-b2g37?
Updated•9 years ago
|
Attachment #8586934 -
Flags: approval-mozilla-b2g37? → approval-mozilla-b2g37+
Comment 33•9 years ago
|
||
https://hg.mozilla.org/releases/mozilla-b2g37_v2_2/rev/22373af050a2
status-firefox38:
--- → wontfix
status-firefox39:
--- → wontfix
Comment 34•8 years ago
|
||
This issue is verified as fixed on central Flame and Aries. Device now properly announce newly focused items if previous item announcing was interrupted. Tested this several minutes on each device/branch and heard no significant issues. Device: Flame 2.6 BuildID: 20151210030222 Gaia: 961528f4391668bc89ec0be14fa367cea099b588 Gecko: b40ba117fa757861c9caa660ae989122718b494b Gonk: 205ac4204bbbb2098a8046444acba551ba5dc75a Version: 45.0a1 (2.6) Firmware Version: v18D User Agent: Mozilla/5.0 (Mobile; rv:45.0) Gecko/45.0 Firefox/45.0 Device: Aries 2.6 BuildID: 20151210122424 Gaia: 7e962276913bd4da7ce5fa7540767107ce322c78 Gecko: 412e4d7ce98ca4dbc37de133d0f26d7e1a59946f Gonk: a19052e4389c3ae2d8fc3e7a74a475401baacc56 Version: 45.0a1 (2.6) Firmware Version: D5803_23.1.A.1.28_NCB.ftf User Agent: Mozilla/5.0 (Mobile; rv:45.0) Gecko/45.0 Firefox/45.0 --------- This issue is NOT fixed on Flame 2.5, Aries 2.5. The bug reproduces on these branches, with 2.2 exhibiting the issue much less frequently than 2.5. Newly focused item doesn't always get announced if previous announcing was interrupted. I'll be filing a separate bug for this. Device: Flame 2.5 BuildID: 20151209170211 Gaia: 7ca639a7bb0bacf27f548841c52617bfc0e3b21f Gecko: a35e8eb98969970d1af28b265bf99a9edd11e9c2 Gonk: 205ac4204bbbb2098a8046444acba551ba5dc75a Version: 44.0a2 (2.5) Firmware Version: v18D User Agent: Mozilla/5.0 (Mobile; rv:44.0) Gecko/44.0 Firefox/44.0 Device: Aries 2.5 BuildID: 20151209171644 Gaia: 7ca639a7bb0bacf27f548841c52617bfc0e3b21f Gecko: a35e8eb98969970d1af28b265bf99a9edd11e9c2 Gonk: a19052e4389c3ae2d8fc3e7a74a475401baacc56 Version: 44.0a2 (2.5) Firmware Version: D5803_23.1.A.1.28_NCB.ftf User Agent: Mozilla/5.0 (Mobile; rv:44.0) Gecko/44.0 Firefox/44.0 Device: Flame 2.2 BuildID: 20151209032501 Gaia: 885647d92208fb67574ced44004ab2f29d23cb45 Gecko: 4381c4b69b9c Gonk: bd9cb3af2a0354577a6903917bc826489050b40d Version: 37.0 (2.2) Firmware Version: v18D User Agent: Mozilla/5.0 (Mobile; rv:37.0) Gecko/37.0 Firefox/37.0
Status: RESOLVED → VERIFIED
QA Whiteboard: [QAnalyst-Triage+][MGSEI-Triage+] → [QAnalyst-Triage?][MGSEI-Triage+]
Flags: needinfo?(jmercado)
Updated•8 years ago
|
QA Whiteboard: [QAnalyst-Triage?][MGSEI-Triage+] → [QAnalyst-Triage+][MGSEI-Triage+]
Flags: needinfo?(jmercado)
You need to log in
before you can comment on or make changes to this bug.
Description
•