add sentence service
This commit is contained in:
@@ -17,6 +17,10 @@ and a placeholder interface for future imitation-quality scoring.
|
||||
- Swipe right: next sentence; if there is no sentence data, fast-forward by the
|
||||
configured seek step.
|
||||
|
||||
The sample app's previous/next sentence buttons use the same fallback behavior.
|
||||
Actual sentence navigation requires `SentenceBoundary` timestamps supplied by
|
||||
the course service or extracted from subtitle/speech analysis data.
|
||||
|
||||
These defaults match the desktop player's arrow-key workflow while fitting a
|
||||
tablet touch screen.
|
||||
|
||||
@@ -62,6 +66,50 @@ OralTrainerSdk.init(
|
||||
)
|
||||
```
|
||||
|
||||
## Sentence Boundary API
|
||||
|
||||
The SDK defaults to `https://video_service.d1kt.cn` and requests:
|
||||
|
||||
```text
|
||||
GET /api/v1/videos/{sha256}/sentence-boundaries
|
||||
```
|
||||
|
||||
For a known hash:
|
||||
|
||||
```kotlin
|
||||
sdk.sentenceBoundaryApi.fetch(videoHash, callback)
|
||||
```
|
||||
|
||||
For a local `content://` video, the SDK can hash the file in streaming chunks
|
||||
before querying the API:
|
||||
|
||||
```kotlin
|
||||
sdk.sentenceBoundaryApi.fetchForUri(videoUri, contentResolver, callback)
|
||||
```
|
||||
|
||||
Override the service only when a staging or private deployment is required:
|
||||
|
||||
```kotlin
|
||||
OralTrainerSdk.init(
|
||||
context,
|
||||
OralTrainerSdkConfig(
|
||||
sentenceBoundaryApiBaseUrl = "https://video_service.d1kt.cn"
|
||||
)
|
||||
)
|
||||
```
|
||||
|
||||
## Local Video Testing
|
||||
|
||||
The computer path `/Users/...` is not visible to an Android device. For a
|
||||
quick test, copy the video to the device or use the `选择本地视频` button in the
|
||||
sample app. The Android document picker returns a `content://` URI, which the
|
||||
SDK supports without requesting broad storage permissions.
|
||||
|
||||
For production courses, keep the video on an HTTPS CDN or object-storage
|
||||
service and pass its URL as `TrainingMediaItem.uri`. The SDK streams it and
|
||||
caches downloaded ranges locally. Copying large 4K files to each device is
|
||||
better reserved for explicitly offline courses.
|
||||
|
||||
## Future Imitation Scoring
|
||||
|
||||
Provide an implementation of `ImitationQualityAssessor` when the speech
|
||||
|
||||
Reference in New Issue
Block a user