Skip to content

Commit

Permalink
Merge pull request #17 from OpenVoiceOS/release-0.2.2a1
Browse files Browse the repository at this point in the history
Release 0.2.2a1
  • Loading branch information
JarbasAl authored Nov 20, 2024
2 parents 432bdd0 + 9d2f255 commit ede3a5c
Show file tree
Hide file tree
Showing 4 changed files with 118 additions and 17 deletions.
15 changes: 5 additions & 10 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,21 +1,16 @@
# Changelog

## [0.2.1a1](https://github.com/OpenVoiceOS/ovos-stt-plugin-vosk/tree/0.2.1a1) (2024-09-11)
## [0.2.2a1](https://github.com/OpenVoiceOS/ovos-stt-plugin-vosk/tree/0.2.2a1) (2024-11-20)

[Full Changelog](https://github.com/OpenVoiceOS/ovos-stt-plugin-vosk/compare/V0.2.0a1...0.2.1a1)
[Full Changelog](https://github.com/OpenVoiceOS/ovos-stt-plugin-vosk/compare/V0.2.1...0.2.2a1)

**Merged pull requests:**

- feat:semver [\#13](https://github.com/OpenVoiceOS/ovos-stt-plugin-vosk/pull/13) ([JarbasAl](https://github.com/JarbasAl))
- Clarified syntax for model path [\#12](https://github.com/OpenVoiceOS/ovos-stt-plugin-vosk/pull/12) ([dickorydock](https://github.com/dickorydock))
- fix: drop deprecated import [\#16](https://github.com/OpenVoiceOS/ovos-stt-plugin-vosk/pull/16) ([JarbasAl](https://github.com/JarbasAl))

## [V0.2.0a1](https://github.com/OpenVoiceOS/ovos-stt-plugin-vosk/tree/V0.2.0a1) (2023-02-19)
## [V0.2.1](https://github.com/OpenVoiceOS/ovos-stt-plugin-vosk/tree/V0.2.1) (2024-09-11)

[Full Changelog](https://github.com/OpenVoiceOS/ovos-stt-plugin-vosk/compare/V0.1.4...V0.2.0a1)

**Merged pull requests:**

- bump IT model to version 0.22 [\#11](https://github.com/OpenVoiceOS/ovos-stt-plugin-vosk/pull/11) ([denics](https://github.com/denics))
[Full Changelog](https://github.com/OpenVoiceOS/ovos-stt-plugin-vosk/compare/0.2.1...V0.2.1)



Expand Down
113 changes: 110 additions & 3 deletions ovos_stt_plugin_vosk/__init__.py
Original file line number Diff line number Diff line change
@@ -1,12 +1,19 @@
import json
import os
import shutil
import tarfile
import zipfile
from os import makedirs
from os.path import join, isdir, exists
from queue import Queue
from tempfile import mkstemp
from time import sleep
from os.path import join, exists

import requests
from ovos_plugin_manager.templates.stt import STT, StreamThread, StreamingSTT
from ovos_skill_installer import download_extract_zip, download_extract_tar
from ovos_utils.log import LOG
from ovos_utils.network_utils import is_connected
from ovos_utils.xdg_utils import xdg_data_home
from queue import Queue
from speech_recognition import AudioData
from vosk import Model as KaldiModel, KaldiRecognizer

Expand Down Expand Up @@ -238,3 +245,103 @@ def create_streaming_thread(self):
return VoskKaldiStreamThread(
self.queue, self.lang, self.model, self.verbose
)
def download(url, file=None, session=None):
"""
Pass file as a filename, open file object, or None to return the request bytes
Args:
url (str): URL of file to download
file (Union[str, io, None]): One of the following:
- Filename of output file
- File opened in binary write mode
- None: Return raw bytes instead
Returns:
Union[bytes, None]: Bytes of file if file is None
"""

if isinstance(file, str):
file = open(file, 'wb')
try:
if session:
content = session.get(url).content
else:
content = requests.get(url).content
if file:
file.write(content)
else:
return content
finally:
if file:
file.close()


def download_extract_tar(tar_url, folder, tar_filename='',
skill_folder_name=None, session=None):
"""
Download and extract the tar at the url to the given folder
Args:
tar_url (str): URL of tar file to download
folder (str): Location of parent directory to extract to. Doesn't have to exist
tar_filename (str): Location to download tar. Default is to a temp file
skill_folder_name (str): rename extracted skill folder to this
"""
try:
makedirs(folder)
except OSError:
if not isdir(folder):
raise
if not tar_filename:
fd, tar_filename = mkstemp('.tar.gz')
download(tar_url, os.fdopen(fd, 'wb'), session=session)
else:
download(tar_url, tar_filename, session=session)

with tarfile.open(tar_filename) as tar:
tar.extractall(path=folder)

if skill_folder_name:
with tarfile.open(tar_filename) as tar:
for p in tar.getnames():
original_folder = p.split("/")[0]
break
original_folder = join(folder, original_folder)
final_folder = join(folder, skill_folder_name)
shutil.move(original_folder, final_folder)


def download_extract_zip(zip_url, folder, zip_filename="",
skill_folder_name=None, session=None):
"""
Download and extract the zip at the url to the given folder
Args:
zip_url (str): URL of zip file to download
folder (str): Location of parent directory to extract to. Doesn't have to exist
zip_filename (str): Location to download zip. Default is to a temp file
skill_folder_name (str): rename extracted skill folder to this
"""
try:
makedirs(folder)
except OSError:
if not isdir(folder):
raise
if not zip_filename:
fd, zip_filename = mkstemp('.tar.gz')
download(zip_url, os.fdopen(fd, 'wb'), session=session)
else:
download(zip_url, zip_filename, session=session)

with zipfile.ZipFile(zip_filename, 'r') as zip_ref:
zip_ref.extractall(folder)

if skill_folder_name:
with zipfile.ZipFile(zip_filename, 'r') as zip_ref:
for p in zip_ref.namelist():
original_folder = p.split("/")[0]
break

original_folder = join(folder, original_folder)
final_folder = join(folder, skill_folder_name)
shutil.move(original_folder, final_folder)
4 changes: 2 additions & 2 deletions ovos_stt_plugin_vosk/version.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# START_VERSION_BLOCK
VERSION_MAJOR = 0
VERSION_MINOR = 2
VERSION_BUILD = 1
VERSION_ALPHA = 0
VERSION_BUILD = 2
VERSION_ALPHA = 1
# END_VERSION_BLOCK
3 changes: 1 addition & 2 deletions requirements/requirements.txt
Original file line number Diff line number Diff line change
@@ -1,4 +1,3 @@
vosk
ovos-plugin-manager>=0.0.1,<1.0.0
ovos_skill_installer
SpeechRecognition>=3.8.1
SpeechRecognition>=3.8.1

0 comments on commit ede3a5c

Please sign in to comment.