| 54 | }; |
| 55 | |
| 56 | struct SamplingBeamSearch : public SamplingType { |
| 57 | public: |
| 58 | int beam_size; // ref: |
| 59 | // https://github.com/openai/whisper/blob/f82bc59f5ea234d4b97fb2860842ed38519f7e65/whisper/transcribe.py#L265 |
| 60 | float patience; // NOTE: upstream not implemented, ref: |
| 61 | // https://arxiv.org/pdf/2204.05424.pdf |
| 62 | SamplingBeamSearch() : beam_size(-1), patience(-1.0f) {} |
| 63 | |
| 64 | SamplingBeamSearch(int beam_size, float patience) |
| 65 | : beam_size(beam_size), patience(patience) {} |
| 66 | |
| 67 | SamplingBeamSearch *with_beam_size(int beam_size) { |
| 68 | this->beam_size = beam_size; |
| 69 | return this; |
| 70 | } |
| 71 | SamplingBeamSearch *with_patience(float patience) { |
| 72 | this->patience = patience; |
| 73 | return this; |
| 74 | } |
| 75 | |
| 76 | whisper_sampling_strategy to_enum() override { |
| 77 | return WHISPER_SAMPLING_BEAM_SEARCH; |
| 78 | } |
| 79 | }; |
| 80 | |
| 81 | struct SamplingStrategies { |
| 82 | private: |
nothing calls this directly
no outgoing calls
no test coverage detected