jhj0517 commited on
Commit
d8a7425
·
1 Parent(s): 500f983

Wrap Word data class

Browse files
Files changed (1) hide show
  1. modules/whisper/data_classes.py +19 -7
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=[], description="List of words contained in the segment")
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=[] if seg.words is None else seg.words
49
  )
50
 
51
 
52
- class Word(NamedTuple):
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):