diff --git a/__init__.py b/__init__.py index 10407df..64acffb 100644 --- a/__init__.py +++ b/__init__.py @@ -97,8 +97,11 @@ def _get_mixer(self): def initialize(self): # Register handlers to detect percentages as reported by STT + # Different STT engines might return "50%" or "50 percent" for i in range(101): # numbers 0 to 100 self.register_vocabulary(str(i) + '%', 'Percent') + percent_string = ' '.join([str(i), self.translate('percent')]) + self.register_vocabulary(percent_string, 'Percent') # Register handlers for messagebus events self.add_event('mycroft.volume.increase', @@ -135,7 +138,7 @@ def _setvolume(self, vol, emit=True): if emit: # Notify non-ALSA systems of volume change self.bus.emit(Message('mycroft.volume.set', - data={"percent": vol/100.0})) + data={"percent": vol / 100.0})) # Change Volume to X (Number 0 to) Intent Handlers @intent_handler(IntentBuilder("SetVolume").require("Volume") @@ -361,7 +364,7 @@ def __get_system_volume(self, default=50, show=False): self.log.debug('Volume before mute: {}'.format(vol)) else: vol_msg = self.bus.wait_for_response( - Message("mycroft.volume.get", {'show': show})) + Message("mycroft.volume.get", {'show': show})) if vol_msg: vol = int(vol_msg.data["percent"] * 100) @@ -383,7 +386,7 @@ def __get_volume_level(self, message, default=None): elif (level > self.MAX_LEVEL): # Guess that the user said something like 100 percent # so convert that into a level value - level = self.MAX_LEVEL * level/100 + level = self.MAX_LEVEL * level / 100 except ValueError: pass diff --git a/test/behave/volume.feature b/test/behave/volume.feature index fd1b283..fcf2814 100644 --- a/test/behave/volume.feature +++ b/test/behave/volume.feature @@ -72,6 +72,8 @@ Feature: volume control Examples: change volume to a percent | change volume to a percent | | volume 80 percent | + | set volume to 70 percent | + | set volume to 87% | Scenario Outline: max volume Given an english speaking user