Skip to content

Commit 28c3da3

Browse files
authored
Merge pull request #6 from nvidia-riva/release/0.0.3
Release/0.0.3
2 parents 928c632 + c016c26 commit 28c3da3

39 files changed

+1376
-634
lines changed

.gitignore

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -62,12 +62,8 @@ __pycache__/
6262
*.py[cod]
6363
*$py.class
6464

65-
# C extensions
66-
*.so
67-
6865
# Distribution / packaging
6966
.Python
70-
riva/
7167
build/
7268
develop-eggs/
7369
dist/
@@ -187,3 +183,6 @@ tests/integration/asr/outputs
187183
tests/integration/nlp/outputs
188184
tests/integration/tts/outputs
189185

186+
riva/client/proto/*_pb2.py
187+
riva/client/proto/*_pb2_grpc.py
188+

README.md

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -6,9 +6,9 @@ case and deliver real-time performance. This repo provides performant client exa
66

77
## Main API
88

9-
- `riva_api.ASRService` is a class for speech recognition,
10-
- `riva_api.TTSService` is a class for speech synthesis,
11-
- `riva_api.NLPService` is a class for natural language processing.
9+
- `riva.client.ASRService` is a class for speech recognition,
10+
- `riva.client.TTSService` is a class for speech synthesis,
11+
- `riva.client.NLPService` is a class for natural language processing.
1212

1313
## CLI interface
1414

@@ -43,12 +43,12 @@ pip install --force-reinstall dist/*.whl
4343
```
4444
3. `pip`:
4545
```bash
46-
pip install riva-api
46+
pip install nvidia-riva-client
4747
```
4848

4949
If you would like to use output and input audio devices
5050
(scripts `scripts/asr/transcribe_file_rt.py`, `scripts/asr/transcribe_mic.py`, `scripts/tts/talk.py` or module
51-
`riva_api/audio_io.py`), you will need to install `PyAudio`.
51+
`riva.client/audio_io.py`), you will need to install `PyAudio`.
5252
```bash
5353
conda install -c anaconda pyaudio
5454
```
Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
# SPDX-FileCopyrightText: Copyright (c) 2022 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
22
# SPDX-License-Identifier: MIT
33

4-
from riva_api.asr import (
4+
from riva.client.asr import (
55
AudioChunkFileIterator,
66
ASRService,
77
add_audio_file_specs_to_config,
@@ -11,15 +11,15 @@
1111
print_streaming,
1212
sleep_audio_length,
1313
)
14-
from riva_api.auth import Auth
15-
from riva_api.nlp import (
14+
from riva.client.auth import Auth
15+
from riva.client.nlp import (
1616
NLPService,
1717
extract_all_text_classes_and_confidences,
1818
extract_all_token_classification_predictions,
1919
extract_most_probable_text_class_and_confidence,
2020
extract_most_probable_token_classification_predictions,
2121
)
22-
from riva_api.package_info import (
22+
from riva.client.package_info import (
2323
__contact_emails__,
2424
__contact_names__,
2525
__description__,
@@ -32,6 +32,7 @@
3232
__shortversion__,
3333
__version__,
3434
)
35-
from riva_api.proto.riva_audio_pb2 import AudioEncoding
36-
from riva_api.proto.riva_asr_pb2 import RecognitionConfig, StreamingRecognitionConfig
37-
from riva_api.tts import SpeechSynthesisService
35+
from riva.client.proto.riva_asr_pb2 import RecognitionConfig, StreamingRecognitionConfig
36+
from riva.client.proto.riva_audio_pb2 import AudioEncoding
37+
from riva.client.proto.riva_nlp_pb2 import AnalyzeIntentOptions
38+
from riva.client.tts import SpeechSynthesisService
File renamed without changes.

riva_api/asr.py renamed to riva/client/asr.py

Lines changed: 31 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -6,14 +6,15 @@
66
import sys
77
import time
88
import warnings
9+
import wave
910
from pathlib import Path
1011
from typing import Callable, Dict, Generator, Iterable, List, Optional, TextIO, Union
1112

12-
import wave
13+
from grpc._channel import _MultiThreadedRendezvous
1314

14-
import riva_api.proto.riva_asr_pb2 as rasr
15-
import riva_api.proto.riva_asr_pb2_grpc as rasr_srv
16-
from riva_api.auth import Auth
15+
import riva.client.proto.riva_asr_pb2 as rasr
16+
import riva.client.proto.riva_asr_pb2_grpc as rasr_srv
17+
from riva.client.auth import Auth
1718

1819

1920
def get_wav_file_parameters(input_file: Union[str, os.PathLike]) -> Dict[str, Union[int, float]]:
@@ -113,7 +114,7 @@ def print_streaming(
113114
Prints streaming speech recognition results to provided files or streams.
114115
115116
Args:
116-
responses (:obj:`Iterable[riva_api.proto.riva_asr_pb2.StreamingRecognizeResponse]`): responses acquired during
117+
responses (:obj:`Iterable[riva.client.proto.riva_asr_pb2.StreamingRecognizeResponse]`): responses acquired during
117118
streaming speech recognition.
118119
output_file (:obj:`Union[Union[os.PathLike, str, TextIO], List[Union[os.PathLike, str, TextIO]]]`, `optional`):
119120
a path to an output file or a text stream or a list of paths/streams. If contains several elements, then
@@ -260,7 +261,7 @@ def __init__(self, auth: Auth) -> None:
260261
Initializes an instance of the class.
261262
262263
Args:
263-
auth (:obj:`riva_api.auth.Auth`): an instance of :class:`riva_api.auth.Auth` which is used for
264+
auth (:obj:`riva.client.auth.Auth`): an instance of :class:`riva.client.auth.Auth` which is used for
264265
authentication metadata generation.
265266
"""
266267
self.auth = auth
@@ -286,28 +287,32 @@ def streaming_response_generator(
286287
with wave.open(file_name, 'rb') as wav_f:
287288
raw_audio = wav_f.readframes(n_frames)
288289
289-
streaming_config (:obj:`riva_api.proto.riva_asr_pb2.StreamingRecognitionConfig`): a config for streaming.
290+
streaming_config (:obj:`riva.client.proto.riva_asr_pb2.StreamingRecognitionConfig`): a config for streaming.
290291
You may find description of config fields in message ``StreamingRecognitionConfig`` in
291-
`common repo <https://docs.nvidia.com/deeplearning/riva/user-guide/docs/reference/protos/protos.html#riva-proto-riva-asr-proto>`_.
292+
`common repo
293+
<https://docs.nvidia.com/deeplearning/riva/user-guide/docs/reference/protos/protos.html#riva-proto-riva-asr-proto>`_.
292294
An example of creation of streaming config:
293295
294296
.. code-style:: python
295297
296-
from riva_api import RecognitionConfig, StreamingRecognitionConfig
298+
from riva.client import RecognitionConfig, StreamingRecognitionConfig
297299
config = RecognitionConfig(enable_automatic_punctuation=True)
298300
streaming_config = StreamingRecognitionConfig(config, interim_results=True)
299301
300302
Yields:
301-
:obj:`riva_api.proto.riva_asr_pb2.StreamingRecognizeResponse`: responses for audio chunks in
303+
:obj:`riva.client.proto.riva_asr_pb2.StreamingRecognizeResponse`: responses for audio chunks in
302304
:param:`audio_chunks`. You may find description of response fields in declaration of
303305
``StreamingRecognizeResponse``
304-
message `here <https://docs.nvidia.com/deeplearning/riva/user-guide/docs/reference/protos/protos.html#riva-proto-riva-asr-proto>`_.
306+
message `here
307+
<https://docs.nvidia.com/deeplearning/riva/user-guide/docs/reference/protos/protos.html#riva-proto-riva-asr-proto>`_.
305308
"""
306309
generator = streaming_request_generator(audio_chunks, streaming_config)
307310
for response in self.stub.StreamingRecognize(generator, metadata=self.auth.get_auth_metadata()):
308311
yield response
309312

310-
def offline_recognize(self, audio_bytes: bytes, config: rasr.RecognitionConfig) -> rasr.RecognizeResponse:
313+
def offline_recognize(
314+
self, audio_bytes: bytes, config: rasr.RecognitionConfig, future: bool = False
315+
) -> Union[rasr.RecognizeResponse, _MultiThreadedRendezvous]:
311316
"""
312317
Performs speech recognition for raw audio in :param:`audio_bytes`. This method is for processing of
313318
huge audio at once - not as it is being generated.
@@ -321,21 +326,27 @@ def offline_recognize(self, audio_bytes: bytes, config: rasr.RecognitionConfig)
321326
with wave.open(file_name, 'rb') as wav_f:
322327
raw_audio = wav_f.readframes(n_frames)
323328
324-
config (:obj:`riva_api.proto.riva_asr_pb2.RecognitionConfig`): a config for offline speech recognition.
329+
config (:obj:`riva.client.proto.riva_asr_pb2.RecognitionConfig`): a config for offline speech recognition.
325330
You may find description of config fields in message ``RecognitionConfig`` in
326-
`common repo <https://docs.nvidia.com/deeplearning/riva/user-guide/docs/reference/protos/protos.html#riva-proto-riva-asr-proto>`_.
331+
`common repo
332+
<https://docs.nvidia.com/deeplearning/riva/user-guide/docs/reference/protos/protos.html#riva-proto-riva-asr-proto>`_.
327333
An example of creation of config:
328334
329335
.. code-style:: python
330336
331-
from riva_api import RecognitionConfig
337+
from riva.client import RecognitionConfig
332338
config = RecognitionConfig(enable_automatic_punctuation=True)
339+
future (:obj:`bool`, defaults to :obj:`False`): whether to return an async result instead of usual
340+
response. You can get a response by calling ``result()`` method of the future object.
333341
334342
Returns:
335-
:obj:`riva_api.proto.riva_asr_pb2.RecognizeResponse`: a response with results of :param:`audio_bytes`
336-
processing. You may find description of response fields in declaration of ``RecognizeResponse``
337-
message `here <https://docs.nvidia.com/deeplearning/riva/user-guide/docs/reference/protos/protos.html#riva-proto-riva-asr-proto>`_.
343+
:obj:`Union[riva.client.proto.riva_asr_pb2.RecognizeResponse, grpc._channel._MultiThreadedRendezvous]``: a
344+
response with results of :param:`audio_bytes` processing. You may find description of response fields in
345+
declaration of ``RecognizeResponse`` message `here
346+
<https://docs.nvidia.com/deeplearning/riva/user-guide/docs/reference/protos/protos.html#riva-proto-riva-asr-proto>`_.
347+
If :param:`future` is :obj:`True`, then a future object is returned. You may retrieve a response from a
348+
future object by calling ``result()`` method.
338349
"""
339350
request = rasr.RecognizeRequest(config=config, audio=audio_bytes)
340-
response = self.stub.Recognize(request, metadata=self.auth.get_auth_metadata())
341-
return response
351+
func = self.stub.Recognize.future if future else self.stub.Recognize
352+
return func(request, metadata=self.auth.get_auth_metadata())
File renamed without changes.
File renamed without changes.
File renamed without changes.

0 commit comments

Comments
 (0)