Spaces:
Running
Running
jhj0517
commited on
Commit
·
d8a7425
1
Parent(s):
500f983
Wrap Word data class
Browse files
modules/whisper/data_classes.py
CHANGED
|
@@ -29,11 +29,23 @@ class Segment(BaseModel):
|
|
| 29 |
avg_logprob: Optional[float] = Field(default=None, description="Average log probability of the tokens")
|
| 30 |
compression_ratio: Optional[float] = Field(default=None, description="Compression ratio of the segment")
|
| 31 |
no_speech_prob: Optional[float] = Field(default=None, description="Probability that it's not speech")
|
| 32 |
-
words: Optional[List['Word']] = Field(default=
|
| 33 |
|
| 34 |
@classmethod
|
| 35 |
def from_faster_whisper(cls,
|
| 36 |
seg: faster_whisper.transcribe.Segment):
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 37 |
return cls(
|
| 38 |
id=seg.id,
|
| 39 |
seek=seg.seek,
|
|
@@ -45,15 +57,15 @@ class Segment(BaseModel):
|
|
| 45 |
avg_logprob=seg.avg_logprob,
|
| 46 |
compression_ratio=seg.compression_ratio,
|
| 47 |
no_speech_prob=seg.no_speech_prob,
|
| 48 |
-
words=
|
| 49 |
)
|
| 50 |
|
| 51 |
|
| 52 |
-
class Word(
|
| 53 |
-
start: Optional[float] = None
|
| 54 |
-
end: Optional[float] = None
|
| 55 |
-
word: Optional[str] = None
|
| 56 |
-
probability: Optional[float] = None
|
| 57 |
|
| 58 |
|
| 59 |
class BaseParams(BaseModel):
|
|
|
|
| 29 |
avg_logprob: Optional[float] = Field(default=None, description="Average log probability of the tokens")
|
| 30 |
compression_ratio: Optional[float] = Field(default=None, description="Compression ratio of the segment")
|
| 31 |
no_speech_prob: Optional[float] = Field(default=None, description="Probability that it's not speech")
|
| 32 |
+
words: Optional[List['Word']] = Field(default=None, description="List of words contained in the segment")
|
| 33 |
|
| 34 |
@classmethod
|
| 35 |
def from_faster_whisper(cls,
|
| 36 |
seg: faster_whisper.transcribe.Segment):
|
| 37 |
+
if seg.words is not None:
|
| 38 |
+
words = [
|
| 39 |
+
Word(
|
| 40 |
+
start=w.start,
|
| 41 |
+
end=w.end,
|
| 42 |
+
word=w.word,
|
| 43 |
+
probability=w.probability
|
| 44 |
+
) for w in seg.words
|
| 45 |
+
]
|
| 46 |
+
else:
|
| 47 |
+
words = None
|
| 48 |
+
|
| 49 |
return cls(
|
| 50 |
id=seg.id,
|
| 51 |
seek=seg.seek,
|
|
|
|
| 57 |
avg_logprob=seg.avg_logprob,
|
| 58 |
compression_ratio=seg.compression_ratio,
|
| 59 |
no_speech_prob=seg.no_speech_prob,
|
| 60 |
+
words=words
|
| 61 |
)
|
| 62 |
|
| 63 |
|
| 64 |
+
class Word(BaseModel):
|
| 65 |
+
start: Optional[float] = Field(default=None, description="Start time of the word")
|
| 66 |
+
end: Optional[float] = Field(default=None, description="Start time of the word")
|
| 67 |
+
word: Optional[str] = Field(default=None, description="Word text")
|
| 68 |
+
probability: Optional[float] = Field(default=None, description="Probability of the word")
|
| 69 |
|
| 70 |
|
| 71 |
class BaseParams(BaseModel):
|