tts.go 1.2 KB

12345678910111213141516171819202122232425262728293031323334353637
  1. package model
  2. import "github.com/labring/aiproxy/core/model"
  3. type TextToSpeechRequest struct {
  4. Model string `json:"model" binding:"required"`
  5. Input string `json:"input" binding:"required"`
  6. Voice string `json:"voice" binding:"required"`
  7. ResponseFormat string `json:"response_format"`
  8. Speed float64 `json:"speed"`
  9. StreamFormat string `json:"stream_format"`
  10. }
  11. const (
  12. TextToSpeechSSEResponseTypeDelta = "speech.audio.delta"
  13. TextToSpeechSSEResponseTypeDone = "speech.audio.done"
  14. )
  15. type TextToSpeechSSEResponse struct {
  16. Type string `json:"type"` // constant: TextToSpeechSSEResponseType
  17. Audio string `json:"audio,omitempty"`
  18. Usage *TextToSpeechUsage `json:"usage,omitempty"`
  19. }
  20. type TextToSpeechUsage struct {
  21. InputTokens int64 `json:"input_tokens"`
  22. OutputTokens int64 `json:"output_tokens"`
  23. TotalTokens int64 `json:"total_tokens"`
  24. }
  25. func (u *TextToSpeechUsage) ToModelUsage() model.Usage {
  26. return model.Usage{
  27. InputTokens: model.ZeroNullInt64(u.InputTokens),
  28. OutputTokens: model.ZeroNullInt64(u.OutputTokens),
  29. TotalTokens: model.ZeroNullInt64(u.TotalTokens),
  30. }
  31. }