mirror of
https://github.com/OpenVoiceOS/OpenVoiceOS
synced 2025-06-05 22:19:21 +02:00
Bump skill-ovos-volume
This commit is contained in:
@ -1,192 +0,0 @@
|
|||||||
From 79c82a85765730f3c719faa74e1ffd74b63c56ae Mon Sep 17 00:00:00 2001
|
|
||||||
From: jarbasai <jarbasai@mailfence.com>
|
|
||||||
Date: Wed, 16 Mar 2022 15:03:33 +0000
|
|
||||||
Subject: [PATCH] integrate with PHAL
|
|
||||||
|
|
||||||
https://github.com/OpenVoiceOS/ovos-PHAL-plugin-alsa
|
|
||||||
---
|
|
||||||
__init__.py | 125 +++++++++--------------------------------
|
|
||||||
blop-mark-diangelo.wav | Bin 87676 -> 0 bytes
|
|
||||||
2 files changed, 27 insertions(+), 98 deletions(-)
|
|
||||||
delete mode 100644 blop-mark-diangelo.wav
|
|
||||||
|
|
||||||
diff --git a/__init__.py b/__init__.py
|
|
||||||
index e85793c..03bb87f 100644
|
|
||||||
--- a/__init__.py
|
|
||||||
+++ b/__init__.py
|
|
||||||
@@ -1,86 +1,18 @@
|
|
||||||
-from os.path import dirname, join
|
|
||||||
-
|
|
||||||
from adapt.intent import IntentBuilder
|
|
||||||
from mycroft.skills.core import MycroftSkill, intent_handler, intent_file_handler
|
|
||||||
-from mycroft.util import play_wav, normalize
|
|
||||||
+from mycroft.util import normalize
|
|
||||||
from mycroft.util.parse import extract_number
|
|
||||||
-from ovos_utils.sound.alsa import AlsaControl
|
|
||||||
-from mycroft_bus_client import Message
|
|
||||||
|
|
||||||
|
|
||||||
class VolumeSkill(MycroftSkill):
|
|
||||||
- def __init__(self):
|
|
||||||
- super(VolumeSkill, self).__init__("VolumeSkill")
|
|
||||||
- self.volume_sound = join(dirname(__file__), "blop-mark-diangelo.wav")
|
|
||||||
-
|
|
||||||
- # bus api
|
|
||||||
- def initialize(self):
|
|
||||||
- self.add_event("mycroft.volume.get", self.handle_volume_request)
|
|
||||||
- self.add_event("mycroft.volume.set", self.handle_volume_change)
|
|
||||||
- self.add_event("mycroft.volume.set.gui",
|
|
||||||
- self.handle_volume_change_gui)
|
|
||||||
- self.handle_volume_request(Message("mycroft.volume.get"))
|
|
||||||
- self.add_event("mycroft.volume.mute",
|
|
||||||
- self.handle_mute_intent)
|
|
||||||
- self.add_event("mycroft.volume.unmute",
|
|
||||||
- self.handle_unmute_intent)
|
|
||||||
-
|
|
||||||
- def handle_volume_request(self, message):
|
|
||||||
- percent = self.get_volume() / 100
|
|
||||||
- self.bus.emit(message.response({"percent": percent}))
|
|
||||||
-
|
|
||||||
- def handle_volume_change(self, message):
|
|
||||||
- percent = message.data["percent"] * 100
|
|
||||||
- self.set_volume(percent)
|
|
||||||
-
|
|
||||||
- def handle_volume_change_gui(self, message):
|
|
||||||
- percent = message.data["percent"] * 100
|
|
||||||
- self.set_volume(percent, set_by_gui=True)
|
|
||||||
-
|
|
||||||
- # volume control
|
|
||||||
- def get_intro_message(self):
|
|
||||||
- # just pretend this method is called "on_first_boot"
|
|
||||||
- # will only run once when the skill is loaded for the first time
|
|
||||||
- self.set_volume(50)
|
|
||||||
-
|
|
||||||
- def get_volume(self):
|
|
||||||
- return AlsaControl().get_volume_percent()
|
|
||||||
-
|
|
||||||
- def set_volume(self, percent=None, set_by_gui=False):
|
|
||||||
- volume = int(percent)
|
|
||||||
- volume = min(100, volume)
|
|
||||||
- volume = max(0, volume)
|
|
||||||
- AlsaControl().set_volume_percent(volume)
|
|
||||||
- play_wav(self.volume_sound)
|
|
||||||
-
|
|
||||||
- # report change to GUI
|
|
||||||
- if not set_by_gui:
|
|
||||||
- percent = volume / 100
|
|
||||||
- self.handle_volume_request(
|
|
||||||
- Message("mycroft.volume.get", {"percent": percent}))
|
|
||||||
-
|
|
||||||
- def increase_volume(self, volume_change=None):
|
|
||||||
- if not volume_change:
|
|
||||||
- volume_change = 15
|
|
||||||
- AlsaControl().increase_volume(volume_change)
|
|
||||||
- play_wav(self.volume_sound)
|
|
||||||
- self.handle_volume_request(Message("mycroft.volume.get"))
|
|
||||||
-
|
|
||||||
- def decrease_volume(self, volume_change=None):
|
|
||||||
- if not volume_change:
|
|
||||||
- volume_change = -15
|
|
||||||
- if volume_change > 0:
|
|
||||||
- volume_change = 0 - volume_change
|
|
||||||
- AlsaControl().increase_volume(volume_change)
|
|
||||||
- play_wav(self.volume_sound)
|
|
||||||
- self.handle_volume_request(Message("mycroft.volume.get"))
|
|
||||||
|
|
||||||
# intents
|
|
||||||
@intent_handler(IntentBuilder("change_volume").require('change_volume'))
|
|
||||||
def handle_change_volume_intent(self, message):
|
|
||||||
utterance = message.data['utterance']
|
|
||||||
volume_change = extract_number(normalize(utterance))
|
|
||||||
- self.set_volume(volume_change)
|
|
||||||
+ self.bus.emit(message.forward("mycroft.volume.set",
|
|
||||||
+ {"percent": volume_change / 100}))
|
|
||||||
if volume_change >= 100:
|
|
||||||
self.speak_dialog('max.volume')
|
|
||||||
else:
|
|
||||||
@@ -91,61 +23,58 @@ def handle_change_volume_intent(self, message):
|
|
||||||
def handle_less_volume_intent(self, message):
|
|
||||||
utterance = message.data['utterance']
|
|
||||||
volume_change = extract_number(normalize(utterance))
|
|
||||||
- if volume_change > 0:
|
|
||||||
- volume_change = 0 - volume_change
|
|
||||||
- self.decrease_volume(volume_change)
|
|
||||||
+ self.bus.emit(message.forward("mycroft.volume.decrease",
|
|
||||||
+ {"percent": volume_change / 100}))
|
|
||||||
|
|
||||||
- @intent_handler(
|
|
||||||
- IntentBuilder("increase_volume").require('increase_volume'))
|
|
||||||
+ @intent_handler(IntentBuilder("increase_volume").require('increase_volume'))
|
|
||||||
def handle_increase_volume_intent(self, message):
|
|
||||||
utterance = message.data['utterance']
|
|
||||||
volume_change = extract_number(normalize(utterance))
|
|
||||||
- self.increase_volume(volume_change)
|
|
||||||
+ self.bus.emit(message.forward("mycroft.volume.increase",
|
|
||||||
+ {"percent": volume_change / 100}))
|
|
||||||
|
|
||||||
@intent_file_handler('max_volume.intent')
|
|
||||||
def handle_max_volume_intent(self, message):
|
|
||||||
- self.set_volume(100)
|
|
||||||
+ self.bus.emit(message.forward("mycroft.volume.set",
|
|
||||||
+ {"percent": 1.0}))
|
|
||||||
self.speak_dialog('max.volume')
|
|
||||||
|
|
||||||
@intent_file_handler('high_volume.intent')
|
|
||||||
def handle_high_volume_intent(self, message):
|
|
||||||
- self.set_volume(85)
|
|
||||||
+ self.bus.emit(message.forward("mycroft.volume.set",
|
|
||||||
+ {"percent": 0.9}))
|
|
||||||
|
|
||||||
@intent_file_handler('default_volume.intent')
|
|
||||||
- def handle_default_volume_ntent(self, message):
|
|
||||||
- self.set_volume(70)
|
|
||||||
+ def handle_default_volume_intent(self, message):
|
|
||||||
+ self.bus.emit(message.forward("mycroft.volume.set",
|
|
||||||
+ {"percent": 0.7}))
|
|
||||||
|
|
||||||
@intent_file_handler('low_volume.intent')
|
|
||||||
def handle_low_volume_intent(self, message):
|
|
||||||
- self.set_volume(30)
|
|
||||||
+ self.bus.emit(message.forward("mycroft.volume.set",
|
|
||||||
+ {"percent": 0.3}))
|
|
||||||
|
|
||||||
@intent_file_handler('mute.intent')
|
|
||||||
def handle_mute_intent(self, message):
|
|
||||||
- self.log.info("User muted audio.")
|
|
||||||
- AlsaControl().mute()
|
|
||||||
- self.bus.emit(Message("mycroft.volume.get").response({"percent" : 0}))
|
|
||||||
+ self.bus.emit(message.forward("mycroft.volume.mute"))
|
|
||||||
|
|
||||||
@intent_file_handler('unmute.intent')
|
|
||||||
def handle_unmute_intent(self, message):
|
|
||||||
- alsa = AlsaControl()
|
|
||||||
- self.log.info("User unmuted audio.")
|
|
||||||
- alsa.unmute()
|
|
||||||
- volume = alsa.get_volume_percent()
|
|
||||||
- self.bus.emit(Message("mycroft.volume.get").response({"percent" : volume / 100}))
|
|
||||||
+ self.bus.emit(message.forward("mycroft.volume.unmute"))
|
|
||||||
|
|
||||||
@intent_file_handler('toggle_mute.intent')
|
|
||||||
def handle_toggle_unmute_intent(self, message):
|
|
||||||
- alsa = AlsaControl()
|
|
||||||
- alsa.toggle_mute()
|
|
||||||
- muted = alsa.is_muted()
|
|
||||||
- self.log.info(f"User toggled mute. Result: {'muted' if muted else 'unmuted'}")
|
|
||||||
- self.bus.emit(Message("mycroft.volume.get").response(
|
|
||||||
- {"percent" : 0 if muted else (alsa.get_volume_percent() / 100)}))
|
|
||||||
+ self.bus.emit(message.forward("mycroft.volume.mute.toggle"))
|
|
||||||
|
|
||||||
@intent_handler(IntentBuilder("current_volume").require('current_volume'))
|
|
||||||
def handle_query_volume(self, message):
|
|
||||||
- volume = AlsaControl().get_volume()
|
|
||||||
- self.speak_dialog('volume.is', data={'volume': volume})
|
|
||||||
+ response = self.bus.wait_for_response(message.forward("volume.get"))
|
|
||||||
+ if response:
|
|
||||||
+ volume = response.data["percent"] * 100
|
|
||||||
+ self.speak_dialog('volume.is', data={'volume': volume})
|
|
||||||
+ else:
|
|
||||||
+ # TODO dedicated error dialog
|
|
||||||
+ raise TimeoutError("Failed to get volume")
|
|
||||||
|
|
||||||
|
|
||||||
def create_skill():
|
|
@ -4,7 +4,7 @@
|
|||||||
#
|
#
|
||||||
################################################################################
|
################################################################################
|
||||||
|
|
||||||
MYCROFT_SKILL_OVOS_VOLUME_VERSION = c36d2e85654fd128821af57856e028700fd8255c
|
MYCROFT_SKILL_OVOS_VOLUME_VERSION = 9627e031e883f30bd7d64052e7d5d17b2d239ad8
|
||||||
MYCROFT_SKILL_OVOS_VOLUME_SITE = https://github.com/OpenVoiceOS/skill-ovos-volume
|
MYCROFT_SKILL_OVOS_VOLUME_SITE = https://github.com/OpenVoiceOS/skill-ovos-volume
|
||||||
MYCROFT_SKILL_OVOS_VOLUME_SITE_METHOD = git
|
MYCROFT_SKILL_OVOS_VOLUME_SITE_METHOD = git
|
||||||
MYCROFT_SKILL_OVOS_VOLUME_DIRLOCATION = home/mycroft/.local/share/mycroft/skills
|
MYCROFT_SKILL_OVOS_VOLUME_DIRLOCATION = home/mycroft/.local/share/mycroft/skills
|
||||||
|
Reference in New Issue
Block a user