#3 Adding WhisperSettings
			#7
			
				
			
		
		
	 Merged
	
	
		
		
			
		
		
		
		
			
		
		
			
			
				androiddrew
				merged 2 commits from drew/3-whisper-settings  into master 2 years ago
			
		
	
	
@ -0,0 +1,22 @@
 | 
				
			|||||||
 | 
					from pydantic import BaseSettings, Field
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					class WhisperSettings(BaseSettings):
 | 
				
			||||||
 | 
					    """Whisper Application Settings.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    All environment varaibles supplied should be prefixed with "WHISPER_".
 | 
				
			||||||
 | 
					    """
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    base_asr_model: str = Field(
 | 
				
			||||||
 | 
					        default="medium.en", description="The base whisper model to host."
 | 
				
			||||||
 | 
					    )
 | 
				
			||||||
 | 
					    default_sample_rate: int = Field(
 | 
				
			||||||
 | 
					        default=16000,
 | 
				
			||||||
 | 
					        description="The default sample rate used to resample the audio if necessary",
 | 
				
			||||||
 | 
					    )
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    class Config:
 | 
				
			||||||
 | 
					        env_prefix = "WHISPER_"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					whisper_settings = WhisperSettings()
 | 
				
			||||||
@ -1,9 +1,13 @@
 | 
				
			|||||||
from local_whisper.inference import transcribe
 | 
					 | 
				
			||||||
from local_whisper.audio import load_audio
 | 
					from local_whisper.audio import load_audio
 | 
				
			||||||
 | 
					from local_whisper.inference import transcribe
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
def test_transcribe(sample_audio):
 | 
					def test_transcribe(sample_audio):
 | 
				
			||||||
    with open(sample_audio, mode="rb") as af:
 | 
					    with open(sample_audio, mode="rb") as af:
 | 
				
			||||||
        audio = load_audio(af)
 | 
					        audio = load_audio(af)
 | 
				
			||||||
    result = transcribe(audio)
 | 
					    result = transcribe(audio)
 | 
				
			||||||
    assert result["text"].strip() == "Let's see, right now I'm playing Horizon Zero Dawn. I also had just recently finished BioShock Infinite."
 | 
					    assert (
 | 
				
			||||||
 | 
					        result["text"].strip().lower()
 | 
				
			||||||
 | 
					        == "Let's see, right now I'm playing Horizon Zero Dawn."
 | 
				
			||||||
 | 
					        " I also had just recently finished BioShock Infinite.".lower()
 | 
				
			||||||
 | 
					    )
 | 
				
			||||||
 | 
				
			|||||||
@ -0,0 +1,29 @@
 | 
				
			|||||||
 | 
					import os
 | 
				
			||||||
 | 
					from unittest.mock import patch
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					from pydantic.types import SecretStr
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					from local_whisper.settings import WhisperSettings
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					SETTING_DEFAULTS = {"BASE_ASR_MODEL": "medium.en", "DEFAULT_SAMPLE_RATE": 16000}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					def test_setting_defaults():
 | 
				
			||||||
 | 
					    """Regression test for settings schema."""
 | 
				
			||||||
 | 
					    with patch.dict(os.environ, {}, clear=True):
 | 
				
			||||||
 | 
					        savant_settings = WhisperSettings()
 | 
				
			||||||
 | 
					        assert len(savant_settings.dict()) == len(SETTING_DEFAULTS)
 | 
				
			||||||
 | 
					        for k, v in SETTING_DEFAULTS.items():
 | 
				
			||||||
 | 
					            _setting_value = getattr(savant_settings, k.lower())
 | 
				
			||||||
 | 
					            unmasked_setting = (
 | 
				
			||||||
 | 
					                _setting_value.get_secret_value()
 | 
				
			||||||
 | 
					                if isinstance(_setting_value, SecretStr)
 | 
				
			||||||
 | 
					                else _setting_value
 | 
				
			||||||
 | 
					            )
 | 
				
			||||||
 | 
					            unmasked_setting == v
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					def test_with_envvar_prefix():
 | 
				
			||||||
 | 
					    with patch.dict(os.environ, {"WHISPER_DEFAULT_SAMPLE_RATE": "22500"}, clear=True):
 | 
				
			||||||
 | 
					        whisper_settings = WhisperSettings()
 | 
				
			||||||
 | 
					        assert whisper_settings.default_sample_rate == 22500
 | 
				
			||||||
					Loading…
					
					
				
		Reference in New Issue