Skip to content

Invalid utterance locator value after calling TtsNavigator.go #759

@Zellius

Description

@Zellius

Describe the bug

I am trying to synchronize locators between the UI (EpubNavigatorFragment) and TTS (TtsNavigator) navigators.

The goal is:

  • The UI navigator should display the current TTS position.
  • The TTS should start playing from the currently displayed page if the user changes it.

During implementation I noticed unexpected behavior with TtsNavigator.go.

After calling:

ttsNavigator.go(newLocator)

TTS correctly starts reading from the new position. However, TtsNavigator.currentLocator continues emitting the previous locator values for some time. Only after a delay does it begin emitting locators from the new position.

This causes synchronization issues between the UI and TTS navigators, because the UI relies on currentLocator updates.

The behavior is the same regardless of whether the publication is scrollable or paginated.

How to reproduce?

I was able to reproduce the same behavior in the test app. I made some changes in my fork, such as adding custom logs and allowing pages to change while the TTS is playing:

https://github.com/Zellius/kotlin-toolkit/tree/tts_bug

  • Clone the project above using the tts_bug branch and run the app.
  • Open any publication (I used Moby Dick from the OPDS catalog).
  • Set scrollable = true (although this does not affect the issue).
  • Navigate to Chapter 1.
  • Start TTS and wait until it begins reading the long utterance starting with:

"Some years ago — never mind..."

  • Swipe right to change the page.
  • TTS starts playing a new utterance from the new page.
  • Check Logcat. TTS continues emitting old locator values (from before the swipe, OPS/main2.xml instead of OPS/main3.xml) for some time before eventually emitting the correct locators.
Screen_recording_20260223_165832.mp4

Readium version

3.1.2

Android API version

35

Additional context

Please check my comments in the log below

`TTS position` Locator(href=OPS/main2.xml, mediaType=application/xhtml+xml, title=null, locations=Locations(fragments=[], progression=0.0, position=null, totalProgression=0.02359882005899705, otherLocations={cssSelector=html > body > div.body > div.chapter > h2}), text=Text(before=null, highlight=Chapter1 Loomings, after=s))
`TTS utterance` Locator(href=OPS/main2.xml, mediaType=application/xhtml+xml, title=null, locations=Locations(fragments=[], progression=0.0, position=null, totalProgression=0.02359882005899705, otherLocations={cssSelector=html > body > div.body > div.chapter > h2}), text=Text(before=null, highlight=Chapter1 Loomings, after=s))
>>>>> The TTS started
`TTS.go` Locator(href=OPS/main2.xml, mediaType=application/xhtml+xml, title=null, locations=Locations(fragments=[], progression=null, position=null, totalProgression=null, otherLocations={cssSelector=.translation}), text=Text(before=null, highlight=Chapter, after=null))
`TTS utterance` Locator(href=OPS/main2.xml, mediaType=application/xhtml+xml, title=null, locations=Locations(fragments=[], progression=0.0, position=null, totalProgression=0.02359882005899705, otherLocations={cssSelector=html > body > div.body > div.chapter > h2}), text=Text(before=null, highlight=Chapter1 Loomings, after=s))
`TTS position` Locator(href=OPS/main2.xml, mediaType=application/xhtml+xml, title=null, locations=Locations(fragments=[], progression=0.0, position=null, totalProgression=0.02359882005899705, otherLocations={cssSelector=html > body > div.body > div.chapter > h2}), text=Text(before=, highlight=Chapter, after=1 Loomingss))
`TTS utterance` Locator(href=OPS/main2.xml, mediaType=application/xhtml+xml, title=null, locations=Locations(fragments=[], progression=0.0, position=null, totalProgression=0.02359882005899705, otherLocations={cssSelector=html > body > div.body > div.chapter > h2}), text=Text(before=null, highlight=Chapter1 Loomings, after=s))
`TTS position` Locator(href=OPS/main2.xml, mediaType=application/xhtml+xml, title=null, locations=Locations(fragments=[], progression=0.0, position=null, totalProgression=0.02359882005899705, otherLocations={cssSelector=html > body > div.body > div.chapter > h2}), text=Text(before=Chapter, highlight=1, after= Loomingss))
`TTS utterance` Locator(href=OPS/main2.xml, mediaType=application/xhtml+xml, title=null, locations=Locations(fragments=[], progression=0.0, position=null, totalProgression=0.02359882005899705, otherLocations={cssSelector=html > body > div.body > div.chapter > h2}), text=Text(before=null, highlight=Chapter1 Loomings, after=s))
`TTS position` Locator(href=OPS/main2.xml, mediaType=application/xhtml+xml, title=null, locations=Locations(fragments=[], progression=0.0, position=null, totalProgression=0.02359882005899705, otherLocations={cssSelector=html > body > div.body > div.chapter > h2}), text=Text(before=Chapter1 , highlight=Loomings, after=s))
`TTS utterance` Locator(href=OPS/main2.xml, mediaType=application/xhtml+xml, title=null, locations=Locations(fragments=[], progression=0.05555555555555555, position=null, totalProgression=0.024172402490986563, otherLocations={cssSelector=html > body > div.body > div.chapter > div.text > p:nth-child(1)}), text=Text(before=null, highlight=Call me Ishmael., after=. Some years ago—never mind how long precisely—hav))
`TTS position` Locator(href=OPS/main2.xml, mediaType=application/xhtml+xml, title=null, locations=Locations(fragments=[], progression=0.05555555555555555, position=null, totalProgression=0.024172402490986563, otherLocations={cssSelector=html > body > div.body > div.chapter > div.text > p:nth-child(1)}), text=Text(before=null, highlight=Call me Ishmael., after=. Some years ago—never mind how long precisely—hav))
`TTS utterance` Locator(href=OPS/main2.xml, mediaType=application/xhtml+xml, title=null, locations=Locations(fragments=[], progression=0.05555555555555555, position=null, totalProgression=0.024172402490986563, otherLocations={cssSelector=html > body > div.body > div.chapter > div.text > p:nth-child(1)}), text=Text(before=null, highlight=Call me Ishmael., after=. Some years ago—never mind how long precisely—hav))
`TTS position` Locator(href=OPS/main2.xml, mediaType=application/xhtml+xml, title=null, locations=Locations(fragments=[], progression=0.05555555555555555, position=null, totalProgression=0.024172402490986563, otherLocations={cssSelector=html > body > div.body > div.chapter > div.text > p:nth-child(1)}), text=Text(before=, highlight=Call, after= me Ishmael.. Some years ago—never mind how long precisely—hav))
`TTS utterance` Locator(href=OPS/main2.xml, mediaType=application/xhtml+xml, title=null, locations=Locations(fragments=[], progression=0.05555555555555555, position=null, totalProgression=0.024172402490986563, otherLocations={cssSelector=html > body > div.body > div.chapter > div.text > p:nth-child(1)}), text=Text(before=null, highlight=Call me Ishmael., after=. Some years ago—never mind how long precisely—hav))
`TTS position` Locator(href=OPS/main2.xml, mediaType=application/xhtml+xml, title=null, locations=Locations(fragments=[], progression=0.05555555555555555, position=null, totalProgression=0.024172402490986563, otherLocations={cssSelector=html > body > div.body > div.chapter > div.text > p:nth-child(1)}), text=Text(before=Call , highlight=me, after= Ishmael.. Some years ago—never mind how long precisely—hav))
`TTS utterance` Locator(href=OPS/main2.xml, mediaType=application/xhtml+xml, title=null, locations=Locations(fragments=[], progression=0.05555555555555555, position=null, totalProgression=0.024172402490986563, otherLocations={cssSelector=html > body > div.body > div.chapter > div.text > p:nth-child(1)}), text=Text(before=null, highlight=Call me Ishmael., after=. Some years ago—never mind how long precisely—hav))
`TTS position` Locator(href=OPS/main2.xml, mediaType=application/xhtml+xml, title=null, locations=Locations(fragments=[], progression=0.05555555555555555, position=null, totalProgression=0.024172402490986563, otherLocations={cssSelector=html > body > div.body > div.chapter > div.text > p:nth-child(1)}), text=Text(before=Call me , highlight=Ishmael, after=.. Some years ago—never mind how long precisely—hav))
`TTS utterance` Locator(href=OPS/main2.xml, mediaType=application/xhtml+xml, title=null, locations=Locations(fragments=[], progression=0.05555555555555555, position=null, totalProgression=0.024172402490986563, otherLocations={cssSelector=html > body > div.body > div.chapter > div.text > p:nth-child(1)}), text=Text(before=Call me Ishmael. , highlight=Some years ago—never mind how long precisely—having little or no money in my purse, and nothing particular to interest me on shore, I thought I would sail about a little and see the watery part of the world., after=. It is a way I have of driving off the spleen and))
`TTS position` Locator(href=OPS/main2.xml, mediaType=application/xhtml+xml, title=null, locations=Locations(fragments=[], progression=0.05555555555555555, position=null, totalProgression=0.024172402490986563, otherLocations={cssSelector=html > body > div.body > div.chapter > div.text > p:nth-child(1)}), text=Text(before=Call me Ishmael. , highlight=Some years ago—never mind how long precisely—having little or no money in my purse, and nothing particular to interest me on shore, I thought I would sail about a little and see the watery part of the world., after=. It is a way I have of driving off the spleen and))
`TTS utterance` Locator(href=OPS/main2.xml, mediaType=application/xhtml+xml, title=null, locations=Locations(fragments=[], progression=0.05555555555555555, position=null, totalProgression=0.024172402490986563, otherLocations={cssSelector=html > body > div.body > div.chapter > div.text > p:nth-child(1)}), text=Text(before=Call me Ishmael. , highlight=Some years ago—never mind how long precisely—having little or no money in my purse, and nothing particular to interest me on shore, I thought I would sail about a little and see the watery part of the world., after=. It is a way I have of driving off the spleen and))
`TTS position` Locator(href=OPS/main2.xml, mediaType=application/xhtml+xml, title=null, locations=Locations(fragments=[], progression=0.05555555555555555, position=null, totalProgression=0.024172402490986563, otherLocations={cssSelector=html > body > div.body > div.chapter > div.text > p:nth-child(1)}), text=Text(before=Call me Ishmael. , highlight=Some, after= years ago—never mind how long precisely—having little or no money in my purse, and nothing particular to interest me on shore, I thought I would sail about a little and see the watery part of the world.. It is a way I have of driving off the spleen and))
`TTS utterance` Locator(href=OPS/main2.xml, mediaType=application/xhtml+xml, title=null, locations=Locations(fragments=[], progression=0.05555555555555555, position=null, totalProgression=0.024172402490986563, otherLocations={cssSelector=html > body > div.body > div.chapter > div.text > p:nth-child(1)}), text=Text(before=Call me Ishmael. , highlight=Some years ago—never mind how long precisely—having little or no money in my purse, and nothing particular to interest me on shore, I thought I would sail about a little and see the watery part of the world., after=. It is a way I have of driving off the spleen and))
`TTS position` Locator(href=OPS/main2.xml, mediaType=application/xhtml+xml, title=null, locations=Locations(fragments=[], progression=0.05555555555555555, position=null, totalProgression=0.024172402490986563, otherLocations={cssSelector=html > body > div.body > div.chapter > div.text > p:nth-child(1)}), text=Text(before=Call me Ishmael. Some , highlight=years, after= ago—never mind how long precisely—having little or no money in my purse, and nothing particular to interest me on shore, I thought I would sail about a little and see the watery part of the world.. It is a way I have of driving off the spleen and))
`TTS utterance` Locator(href=OPS/main2.xml, mediaType=application/xhtml+xml, title=null, locations=Locations(fragments=[], progression=0.05555555555555555, position=null, totalProgression=0.024172402490986563, otherLocations={cssSelector=html > body > div.body > div.chapter > div.text > p:nth-child(1)}), text=Text(before=Call me Ishmael. , highlight=Some years ago—never mind how long precisely—having little or no money in my purse, and nothing particular to interest me on shore, I thought I would sail about a little and see the watery part of the world., after=. It is a way I have of driving off the spleen and))
`TTS position` Locator(href=OPS/main2.xml, mediaType=application/xhtml+xml, title=null, locations=Locations(fragments=[], progression=0.05555555555555555, position=null, totalProgression=0.024172402490986563, otherLocations={cssSelector=html > body > div.body > div.chapter > div.text > p:nth-child(1)}), text=Text(before=Call me Ishmael. Some years , highlight=ago, after=—never mind how long precisely—having little or no money in my purse, and nothing particular to interest me on shore, I thought I would sail about a little and see the watery part of the world.. It is a way I have of driving off the spleen and))
`TTS utterance` Locator(href=OPS/main2.xml, mediaType=application/xhtml+xml, title=null, locations=Locations(fragments=[], progression=0.05555555555555555, position=null, totalProgression=0.024172402490986563, otherLocations={cssSelector=html > body > div.body > div.chapter > div.text > p:nth-child(1)}), text=Text(before=Call me Ishmael. , highlight=Some years ago—never mind how long precisely—having little or no money in my purse, and nothing particular to interest me on shore, I thought I would sail about a little and see the watery part of the world., after=. It is a way I have of driving off the spleen and))
`TTS position` Locator(href=OPS/main2.xml, mediaType=application/xhtml+xml, title=null, locations=Locations(fragments=[], progression=0.05555555555555555, position=null, totalProgression=0.024172402490986563, otherLocations={cssSelector=html > body > div.body > div.chapter > div.text > p:nth-child(1)}), text=Text(before=Call me Ishmael. Some years ago—, highlight=never, after= mind how long precisely—having little or no money in my purse, and nothing particular to interest me on shore, I thought I would sail about a little and see the watery part of the world.. It is a way I have of driving off the spleen and))
`TTS utterance` Locator(href=OPS/main2.xml, mediaType=application/xhtml+xml, title=null, locations=Locations(fragments=[], progression=0.05555555555555555, position=null, totalProgression=0.024172402490986563, otherLocations={cssSelector=html > body > div.body > div.chapter > div.text > p:nth-child(1)}), text=Text(before=Call me Ishmael. , highlight=Some years ago—never mind how long precisely—having little or no money in my purse, and nothing particular to interest me on shore, I thought I would sail about a little and see the watery part of the world., after=. It is a way I have of driving off the spleen and))
`TTS position` Locator(href=OPS/main2.xml, mediaType=application/xhtml+xml, title=null, locations=Locations(fragments=[], progression=0.05555555555555555, position=null, totalProgression=0.024172402490986563, otherLocations={cssSelector=html > body > div.body > div.chapter > div.text > p:nth-child(1)}), text=Text(before=Call me Ishmael. Some years ago—never , highlight=mind, after= how long precisely—having little or no money in my purse, and nothing particular to interest me on shore, I thought I would sail about a little and see the watery part of the world.. It is a way I have of driving off the spleen and))
`TTS utterance` Locator(href=OPS/main2.xml, mediaType=application/xhtml+xml, title=null, locations=Locations(fragments=[], progression=0.05555555555555555, position=null, totalProgression=0.024172402490986563, otherLocations={cssSelector=html > body > div.body > div.chapter > div.text > p:nth-child(1)}), text=Text(before=Call me Ishmael. , highlight=Some years ago—never mind how long precisely—having little or no money in my purse, and nothing particular to interest me on shore, I thought I would sail about a little and see the watery part of the world., after=. It is a way I have of driving off the spleen and))
`TTS position` Locator(href=OPS/main2.xml, mediaType=application/xhtml+xml, title=null, locations=Locations(fragments=[], progression=0.05555555555555555, position=null, totalProgression=0.024172402490986563, otherLocations={cssSelector=html > body > div.body > div.chapter > div.text > p:nth-child(1)}), text=Text(before=Call me Ishmael. Some years ago—never mind , highlight=how, after= long precisely—having little or no money in my purse, and nothing particular to interest me on shore, I thought I would sail about a little and see the watery part of the world.. It is a way I have of driving off the spleen and))
`TTS utterance` Locator(href=OPS/main2.xml, mediaType=application/xhtml+xml, title=null, locations=Locations(fragments=[], progression=0.05555555555555555, position=null, totalProgression=0.024172402490986563, otherLocations={cssSelector=html > body > div.body > div.chapter > div.text > p:nth-child(1)}), text=Text(before=Call me Ishmael. , highlight=Some years ago—never mind how long precisely—having little or no money in my purse, and nothing particular to interest me on shore, I thought I would sail about a little and see the watery part of the world., after=. It is a way I have of driving off the spleen and))
`TTS position` Locator(href=OPS/main2.xml, mediaType=application/xhtml+xml, title=null, locations=Locations(fragments=[], progression=0.05555555555555555, position=null, totalProgression=0.024172402490986563, otherLocations={cssSelector=html > body > div.body > div.chapter > div.text > p:nth-child(1)}), text=Text(before=Call me Ishmael. Some years ago—never mind how , highlight=long, after= precisely—having little or no money in my purse, and nothing particular to interest me on shore, I thought I would sail about a little and see the watery part of the world.. It is a way I have of driving off the spleen and))
>>>>> The user swiped right
`TTS.go` Locator(href=OPS/main3.xml, mediaType=application/xhtml+xml, title=null, locations=Locations(fragments=[], progression=null, position=null, totalProgression=null, otherLocations={cssSelector=.translation}), text=Text(before=null, highlight=Chapter, after=null))
>>>>> But the TTS navigator still emits old locators OPS/main2.xm instead of OPS/main3.xml
`TTS utterance` Locator(href=OPS/main2.xml, mediaType=application/xhtml+xml, title=null, locations=Locations(fragments=[], progression=0.05555555555555555, position=null, totalProgression=0.024172402490986563, otherLocations={cssSelector=html > body > div.body > div.chapter > div.text > p:nth-child(1)}), text=Text(before=Call me Ishmael. , highlight=Some years ago—never mind how long precisely—having little or no money in my purse, and nothing particular to interest me on shore, I thought I would sail about a little and see the watery part of the world., after=. It is a way I have of driving off the spleen and))
`TTS position` Locator(href=OPS/main2.xml, mediaType=application/xhtml+xml, title=null, locations=Locations(fragments=[], progression=0.05555555555555555, position=null, totalProgression=0.024172402490986563, otherLocations={cssSelector=html > body > div.body > div.chapter > div.text > p:nth-child(1)}), text=Text(before=Call me Ishmael. , highlight=Some ye, after=ars ago—never mind how long precisely—having little or no money in my purse, and nothing particular to interest me on shore, I thought I would sail about a little and see the watery part of the world.. It is a way I have of driving off the spleen and))
`TTS utterance` Locator(href=OPS/main2.xml, mediaType=application/xhtml+xml, title=null, locations=Locations(fragments=[], progression=0.05555555555555555, position=null, totalProgression=0.024172402490986563, otherLocations={cssSelector=html > body > div.body > div.chapter > div.text > p:nth-child(1)}), text=Text(before=Call me Ishmael. , highlight=Some years ago—never mind how long precisely—having little or no money in my purse, and nothing particular to interest me on shore, I thought I would sail about a little and see the watery part of the world., after=. It is a way I have of driving off the spleen and))
`TTS position` Locator(href=OPS/main2.xml, mediaType=application/xhtml+xml, title=null, locations=Locations(fragments=[], progression=0.05555555555555555, position=null, totalProgression=0.024172402490986563, otherLocations={cssSelector=html > body > div.body > div.chapter > div.text > p:nth-child(1)}), text=Text(before=Call me Ishmael. Some ye, highlight=a, after=rs ago—never mind how long precisely—having little or no money in my purse, and nothing particular to interest me on shore, I thought I would sail about a little and see the watery part of the world.. It is a way I have of driving off the spleen and))
`TTS utterance` Locator(href=OPS/main2.xml, mediaType=application/xhtml+xml, title=null, locations=Locations(fragments=[], progression=0.05555555555555555, position=null, totalProgression=0.024172402490986563, otherLocations={cssSelector=html > body > div.body > div.chapter > div.text > p:nth-child(1)}), text=Text(before=Call me Ishmael. , highlight=Some years ago—never mind how long precisely—having little or no money in my purse, and nothing particular to interest me on shore, I thought I would sail about a little and see the watery part of the world., after=. It is a way I have of driving off the spleen and))
`TTS position` Locator(href=OPS/main2.xml, mediaType=application/xhtml+xml, title=null, locations=Locations(fragments=[], progression=0.05555555555555555, position=null, totalProgression=0.024172402490986563, otherLocations={cssSelector=html > body > div.body > div.chapter > div.text > p:nth-child(1)}), text=Text(before=Call me Ishmael. Some year, highlight=s a, after=go—never mind how long precisely—having little or no money in my purse, and nothing particular to interest me on shore, I thought I would sail about a little and see the watery part of the world.. It is a way I have of driving off the spleen and))
`TTS utterance` Locator(href=OPS/main2.xml, mediaType=application/xhtml+xml, title=null, locations=Locations(fragments=[], progression=0.05555555555555555, position=null, totalProgression=0.024172402490986563, otherLocations={cssSelector=html > body > div.body > div.chapter > div.text > p:nth-child(1)}), text=Text(before=Call me Ishmael. , highlight=Some years ago—never mind how long precisely—having little or no money in my purse, and nothing particular to interest me on shore, I thought I would sail about a little and see the watery part of the world., after=. It is a way I have of driving off the spleen and))
`TTS position` Locator(href=OPS/main2.xml, mediaType=application/xhtml+xml, title=null, locations=Locations(fragments=[], progression=0.05555555555555555, position=null, totalProgression=0.024172402490986563, otherLocations={cssSelector=html > body > div.body > div.chapter > div.text > p:nth-child(1)}), text=Text(before=Call me Ishmael. Some years ag, highlight=o—neve, after=r mind how long precisely—having little or no money in my purse, and nothing particular to interest me on shore, I thought I would sail about a little and see the watery part of the world.. It is a way I have of driving off the spleen and))
`TTS utterance` Locator(href=OPS/main2.xml, mediaType=application/xhtml+xml, title=null, locations=Locations(fragments=[], progression=0.05555555555555555, position=null, totalProgression=0.024172402490986563, otherLocations={cssSelector=html > body > div.body > div.chapter > div.text > p:nth-child(1)}), text=Text(before=Call me Ishmael. , highlight=Some years ago—never mind how long precisely—having little or no money in my purse, and nothing particular to interest me on shore, I thought I would sail about a little and see the watery part of the world., after=. It is a way I have of driving off the spleen and))
`TTS position` Locator(href=OPS/main2.xml, mediaType=application/xhtml+xml, title=null, locations=Locations(fragments=[], progression=0.05555555555555555, position=null, totalProgression=0.024172402490986563, otherLocations={cssSelector=html > body > div.body > div.chapter > div.text > p:nth-child(1)}), text=Text(before=Call me Ishmael. Some years ago—never, highlight= mi, after=nd how long precisely—having little or no money in my purse, and nothing particular to interest me on shore, I thought I would sail about a little and see the watery part of the world.. It is a way I have of driving off the spleen and))
`TTS utterance` Locator(href=OPS/main3.xml, mediaType=application/xhtml+xml, title=null, locations=Locations(fragments=[], progression=0.07692307692307693, position=null, totalProgression=0.034490583163149534, otherLocations={cssSelector=html > body > div.body > div.chapter > div.text > p:nth-child(1)}), text=Text(before=null, highlight=I stuffed a shirt or two into my old carpet-bag, tucked it under my arm, and started for Cape Horn and the Pacific., after=. Quitting the good city of old Manhatto, I duly a))
`TTS position` Locator(href=OPS/main3.xml, mediaType=application/xhtml+xml, title=null, locations=Locations(fragments=[], progression=0.07692307692307693, position=null, totalProgression=0.034490583163149534, otherLocations={cssSelector=html > body > div.body > div.chapter > div.text > p:nth-child(1)}), text=Text(before=null, highlight=I stuffed a shirt or two into my old carpet-bag, tucked it under my arm, and started for Cape Horn and the Pacific., after=. Quitting the good city of old Manhatto, I duly a))
`TTS utterance` Locator(href=OPS/main3.xml, mediaType=application/xhtml+xml, title=null, locations=Locations(fragments=[], progression=0.07692307692307693, position=null, totalProgression=0.034490583163149534, otherLocations={cssSelector=html > body > div.body > div.chapter > div.text > p:nth-child(1)}), text=Text(before=null, highlight=I stuffed a shirt or two into my old carpet-bag, tucked it under my arm, and started for Cape Horn and the Pacific., after=. Quitting the good city of old Manhatto, I duly a))
`TTS position` Locator(href=OPS/main3.xml, mediaType=application/xhtml+xml, title=null, locations=Locations(fragments=[], progression=0.07692307692307693, position=null, totalProgression=0.034490583163149534, otherLocations={cssSelector=html > body > div.body > div.chapter > div.text > p:nth-child(1)}), text=Text(before=, highlight=I, after= stuffed a shirt or two into my old carpet-bag, tucked it under my arm, and started for Cape Horn and the Pacific.. Quitting the good city of old Manhatto, I duly a))
`TTS utterance` Locator(href=OPS/main3.xml, mediaType=application/xhtml+xml, title=null, locations=Locations(fragments=[], progression=0.07692307692307693, position=null, totalProgression=0.034490583163149534, otherLocations={cssSelector=html > body > div.body > div.chapter > div.text > p:nth-child(1)}), text=Text(before=null, highlight=I stuffed a shirt or two into my old carpet-bag, tucked it under my arm, and started for Cape Horn and the Pacific., after=. Quitting the good city of old Manhatto, I duly a))
`TTS position` Locator(href=OPS/main3.xml, mediaType=application/xhtml+xml, title=null, locations=Locations(fragments=[], progression=0.07692307692307693, position=null, totalProgression=0.034490583163149534, otherLocations={cssSelector=html > body > div.body > div.chapter > div.text > p:nth-child(1)}), text=Text(before=I , highlight=stuffed, after= a shirt or two into my old carpet-bag, tucked it under my arm, and started for Cape Horn and the Pacific.. Quitting the good city of old Manhatto, I duly a))
`TTS utterance` Locator(href=OPS/main3.xml, mediaType=application/xhtml+xml, title=null, locations=Locations(fragments=[], progression=0.07692307692307693, position=null, totalProgression=0.034490583163149534, otherLocations={cssSelector=html > body > div.body > div.chapter > div.text > p:nth-child(1)}), text=Text(before=null, highlight=I stuffed a shirt or two into my old carpet-bag, tucked it under my arm, and started for Cape Horn and the Pacific., after=. Quitting the good city of old Manhatto, I duly a))
`TTS position` Locator(href=OPS/main3.xml, mediaType=application/xhtml+xml, title=null, locations=Locations(fragments=[], progression=0.07692307692307693, position=null, totalProgression=0.034490583163149534, otherLocations={cssSelector=html > body > div.body > div.chapter > div.text > p:nth-child(1)}), text=Text(before=I stuffed , highlight=a, after= shirt or two into my old carpet-bag, tucked it under my arm, and started for Cape Horn and the Pacific.. Quitting the good city of old Manhatto, I duly a))
`TTS utterance` Locator(href=OPS/main3.xml, mediaType=application/xhtml+xml, title=null, locations=Locations(fragments=[], progression=0.07692307692307693, position=null, totalProgression=0.034490583163149534, otherLocations={cssSelector=html > body > div.body > div.chapter > div.text > p:nth-child(1)}), text=Text(before=null, highlight=I stuffed a shirt or two into my old carpet-bag, tucked it under my arm, and started for Cape Horn and the Pacific., after=. Quitting the good city of old Manhatto, I duly a))
`TTS position` Locator(href=OPS/main3.xml, mediaType=application/xhtml+xml, title=null, locations=Locations(fragments=[], progression=0.07692307692307693, position=null, totalProgression=0.034490583163149534, otherLocations={cssSelector=html > body > div.body > div.chapter > div.text > p:nth-child(1)}), text=Text(before=I stuffed a , highlight=shirt, after= or two into my old carpet-bag, tucked it under my arm, and started for Cape Horn and the Pacific.. Quitting the good city of old Manhatto, I duly a))
`TTS utterance` Locator(href=OPS/main3.xml, mediaType=application/xhtml+xml, title=null, locations=Locations(fragments=[], progression=0.07692307692307693, position=null, totalProgression=0.034490583163149534, otherLocations={cssSelector=html > body > div.body > div.chapter > div.text > p:nth-child(1)}), text=Text(before=null, highlight=I stuffed a shirt or two into my old carpet-bag, tucked it under my arm, and started for Cape Horn and the Pacific., after=. Quitting the good city of old Manhatto, I duly a))
`TTS position` Locator(href=OPS/main3.xml, mediaType=application/xhtml+xml, title=null, locations=Locations(fragments=[], progression=0.07692307692307693, position=null, totalProgression=0.034490583163149534, otherLocations={cssSelector=html > body > div.body > div.chapter > div.text > p:nth-child(1)}), text=Text(before=I stuffed a shirt , highlight=or, after= two into my old carpet-bag, tucked it under my arm, and started for Cape Horn and the Pacific.. Quitting the good city of old Manhatto, I duly a))
`TTS utterance` Locator(href=OPS/main3.xml, mediaType=application/xhtml+xml, title=null, locations=Locations(fragments=[], progression=0.07692307692307693, position=null, totalProgression=0.034490583163149534, otherLocations={cssSelector=html > body > div.body > div.chapter > div.text > p:nth-child(1)}), text=Text(before=null, highlight=I stuffed a shirt or two into my old carpet-bag, tucked it under my arm, and started for Cape Horn and the Pacific., after=. Quitting the good city of old Manhatto, I duly a))
`TTS position` Locator(href=OPS/main3.xml, mediaType=application/xhtml+xml, title=null, locations=Locations(fragments=[], progression=0.07692307692307693, position=null, totalProgression=0.034490583163149534, otherLocations={cssSelector=html > body > div.body > div.chapter > div.text > p:nth-child(1)}), text=Text(before=I stuffed a shirt or , highlight=two, after= into my old carpet-bag, tucked it under my arm, and started for Cape Horn and the Pacific.. Quitting the good city of old Manhatto, I duly a))
`TTS utterance` Locator(href=OPS/main3.xml, mediaType=application/xhtml+xml, title=null, locations=Locations(fragments=[], progression=0.07692307692307693, position=null, totalProgression=0.034490583163149534, otherLocations={cssSelector=html > body > div.body > div.chapter > div.text > p:nth-child(1)}), text=Text(before=null, highlight=I stuffed a shirt or two into my old carpet-bag, tucked it under my arm, and started for Cape Horn and the Pacific., after=. Quitting the good city of old Manhatto, I duly a))
`TTS position` Locator(href=OPS/main3.xml, mediaType=application/xhtml+xml, title=null, locations=Locations(fragments=[], progression=0.07692307692307693, position=null, totalProgression=0.034490583163149534, otherLocations={cssSelector=html > body > div.body > div.chapter > div.text > p:nth-child(1)}), text=Text(before=null, highlight=I stuffed a shirt or two into my old carpet-bag, tucked it under my arm, and started for Cape Horn and the Pacific., after=. Quitting the good city of old Manhatto, I duly a))

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions