mirror of
https://github.com/ggerganov/whisper.cpp.git
synced 2025-04-29 21:54:36 +02:00
go : exposed various parts to the Go Interface (#697)
This commit is contained in:
parent
463e46338c
commit
6704a81255
@ -105,6 +105,10 @@ func (p *Params) SetMaxSegmentLength(n int) {
|
|||||||
p.max_len = C.int(n)
|
p.max_len = C.int(n)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (p *Params) SetTokenTimestamps(b bool) {
|
||||||
|
p.token_timestamps = toBool(b)
|
||||||
|
}
|
||||||
|
|
||||||
// Set max tokens per segment (0 = no limit)
|
// Set max tokens per segment (0 = no limit)
|
||||||
func (p *Params) SetMaxTokensPerSegment(n int) {
|
func (p *Params) SetMaxTokensPerSegment(n int) {
|
||||||
p.max_tokens = C.int(n)
|
p.max_tokens = C.int(n)
|
||||||
|
@ -111,6 +111,11 @@ func (context *context) SetMaxSegmentLength(n uint) {
|
|||||||
context.params.SetMaxSegmentLength(int(n))
|
context.params.SetMaxSegmentLength(int(n))
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Set token timestamps flag
|
||||||
|
func (context *context) SetTokenTimestamps(b bool) {
|
||||||
|
context.params.SetTokenTimestamps(b)
|
||||||
|
}
|
||||||
|
|
||||||
// Set max tokens per segment (0 = no limit)
|
// Set max tokens per segment (0 = no limit)
|
||||||
func (context *context) SetMaxTokensPerSegment(n uint) {
|
func (context *context) SetMaxTokensPerSegment(n uint) {
|
||||||
context.params.SetMaxTokensPerSegment(int(n))
|
context.params.SetMaxTokensPerSegment(int(n))
|
||||||
@ -280,10 +285,14 @@ func toSegment(ctx *whisper.Context, n int) Segment {
|
|||||||
func toTokens(ctx *whisper.Context, n int) []Token {
|
func toTokens(ctx *whisper.Context, n int) []Token {
|
||||||
result := make([]Token, ctx.Whisper_full_n_tokens(n))
|
result := make([]Token, ctx.Whisper_full_n_tokens(n))
|
||||||
for i := 0; i < len(result); i++ {
|
for i := 0; i < len(result); i++ {
|
||||||
|
data := ctx.Whisper_full_get_token_data(n, i)
|
||||||
|
|
||||||
result[i] = Token{
|
result[i] = Token{
|
||||||
Id: int(ctx.Whisper_full_get_token_id(n, i)),
|
Id: int(ctx.Whisper_full_get_token_id(n, i)),
|
||||||
Text: strings.TrimSpace(ctx.Whisper_full_get_token_text(n, i)),
|
Text: ctx.Whisper_full_get_token_text(n, i),
|
||||||
P: ctx.Whisper_full_get_token_p(n, i),
|
P: ctx.Whisper_full_get_token_p(n, i),
|
||||||
|
Start: time.Duration(data.T0()) * time.Millisecond * 10,
|
||||||
|
End: time.Duration(data.T1()) * time.Millisecond * 10,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return result
|
return result
|
||||||
|
@ -41,6 +41,7 @@ type Context interface {
|
|||||||
SetTokenThreshold(float32) // Set timestamp token probability threshold
|
SetTokenThreshold(float32) // Set timestamp token probability threshold
|
||||||
SetTokenSumThreshold(float32) // Set timestamp token sum probability threshold
|
SetTokenSumThreshold(float32) // Set timestamp token sum probability threshold
|
||||||
SetMaxSegmentLength(uint) // Set max segment length in characters
|
SetMaxSegmentLength(uint) // Set max segment length in characters
|
||||||
|
SetTokenTimestamps(bool) // Set token timestamps flag
|
||||||
SetMaxTokensPerSegment(uint) // Set max tokens per segment (0 = no limit)
|
SetMaxTokensPerSegment(uint) // Set max tokens per segment (0 = no limit)
|
||||||
|
|
||||||
// Process mono audio data and return any errors.
|
// Process mono audio data and return any errors.
|
||||||
@ -88,4 +89,5 @@ type Token struct {
|
|||||||
Id int
|
Id int
|
||||||
Text string
|
Text string
|
||||||
P float32
|
P float32
|
||||||
|
Start, End time.Duration
|
||||||
}
|
}
|
||||||
|
@ -356,7 +356,7 @@ func (ctx *Context) Whisper_full_get_token_id(segment int, token int) Token {
|
|||||||
|
|
||||||
// Get token data for the specified token in the specified segment.
|
// Get token data for the specified token in the specified segment.
|
||||||
// This contains probabilities, timestamps, etc.
|
// This contains probabilities, timestamps, etc.
|
||||||
func (ctx *Context) whisper_full_get_token_data(segment int, token int) TokenData {
|
func (ctx *Context) Whisper_full_get_token_data(segment int, token int) TokenData {
|
||||||
return TokenData(C.whisper_full_get_token_data((*C.struct_whisper_context)(ctx), C.int(segment), C.int(token)))
|
return TokenData(C.whisper_full_get_token_data((*C.struct_whisper_context)(ctx), C.int(segment), C.int(token)))
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -407,3 +407,11 @@ func callEncoderBegin(user_data unsafe.Pointer) C.bool {
|
|||||||
}
|
}
|
||||||
return true
|
return true
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (t TokenData) T0() int64 {
|
||||||
|
return int64(t.t0)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (t TokenData) T1() int64 {
|
||||||
|
return int64(t.t1)
|
||||||
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user