Skip to content

Commit 42be884

Browse files
authored
v1.1 (#66)
1 parent 6cacd0e commit 42be884

File tree

117 files changed

+715
-391
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

117 files changed

+715
-391
lines changed

.github/workflows/nodejs-perf.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -63,7 +63,7 @@ jobs:
6363
- machine: rpi3-32
6464
proc_performance_threshold_sec: 2.9
6565
- machine: rpi3-64
66-
proc_performance_threshold_sec: 2.1
66+
proc_performance_threshold_sec: 2.5
6767
- machine: rpi4-32
6868
proc_performance_threshold_sec: 1.3
6969
- machine: rpi4-64

.github/workflows/web-demos.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ jobs:
2525

2626
strategy:
2727
matrix:
28-
node-version: [ 16.x, 18.x, 20.x ]
28+
node-version: [ 18.x, 20.x, 22.x ]
2929

3030
steps:
3131
- uses: actions/checkout@v3

.github/workflows/web.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ jobs:
2929

3030
strategy:
3131
matrix:
32-
node-version: [ 16.x, 18.x, 20.x ]
32+
node-version: [ 18.x, 20.x, 22.x ]
3333

3434
steps:
3535
- uses: actions/checkout@v3

README.md

Lines changed: 12 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@ voice assistants. Orca is:
3232
- [Orca streaming text synthesis](#orca-input-and-output-streaming-synthesis)
3333
- [Text input](#text-input)
3434
- [Custom pronunciations](#custom-pronunciations)
35-
- [Voices](#voices)
35+
- [Language and Voice](#language-and-voice)
3636
- [Speech control](#speech-control)
3737
- [Audio output](#audio-output)
3838
- [AccessKey](#accesskey)
@@ -93,17 +93,11 @@ The following are examples of sentences using custom pronunciations:
9393
- "{read|R IY D} this as {read|R EH D}, please."
9494
- "I {live|L IH V} in {Sevilla|S EH V IY Y AH}. We have great {live|L AY V} sports!"
9595

96-
### Voices
96+
### Language and Voice
9797

98-
Orca can synthesize speech with various voices, each of which is characterized by a model file located
99-
in [lib/common](./lib/common).
100-
To synthesize speech with a specific voice, provide the associated model file as an argument to the orca init function.
101-
The following are the voices currently available:
98+
Orca Streaming Text-to-Speech can synthesize speech in different languages and with a variety of voices, each of which is characterized by a model file (`.pv`) located in [lib/common](./lib/common). The language and gender of the speaker is indicated in the file name.
10299

103-
| Model name | Sample rate (Hz) |
104-
|:---------------------------------------------------------:|:----------------:|
105-
| [orca_params_female.pv](lib/common/orca_params_female.pv) | 22050 |
106-
| [orca_params_male.pv](lib/common/orca_params_male.pv) | 22050 |
100+
To synthesize speech with a specific language and voice, provide the associated model file as an argument to the Orca init function.
107101

108102
### Speech control
109103

@@ -779,7 +773,14 @@ For more details, see the [Node.js SDK](./binding/nodejs/).
779773

780774
## Releases
781775

782-
### v1.0.0 - Aug 20th, 2024
776+
### v1.1.0 - February 24th, 2025
777+
778+
- Added support for Spanish voices
779+
- Improved English voices
780+
- Added .NET SDK
781+
- Improved text normalization
782+
783+
### v1.0.0 - August 20th, 2024
783784

784785
- Improved voice quality
785786
- Significantly reduced latency in streaming synthesis

binding/android/Orca/orca/build.gradle

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ apply plugin: 'com.android.library'
22

33
ext {
44
PUBLISH_GROUP_ID = 'ai.picovoice'
5-
PUBLISH_VERSION = '1.0.0'
5+
PUBLISH_VERSION = '1.1.0'
66
PUBLISH_ARTIFACT_ID = 'orca-android'
77
}
88

binding/android/OrcaTestApp/orca-test-app/build.gradle

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -71,8 +71,8 @@ android {
7171

7272
tasks.register('copyParams', Copy) {
7373
from("$projectDir/../../../../lib/common/")
74-
include("orca_params_female.pv")
75-
include("orca_params_male.pv")
74+
include("orca_params_en_female.pv")
75+
include("orca_params_en_male.pv")
7676
into("$projectDir/src/main/assets/models")
7777
}
7878

@@ -113,7 +113,7 @@ dependencies {
113113
implementation 'androidx.constraintlayout:constraintlayout:2.1.4'
114114
implementation 'com.google.code.gson:gson:2.10'
115115
implementation 'com.google.errorprone:error_prone_annotations:2.36.0'
116-
implementation 'ai.picovoice:orca-android:1.0.0'
116+
implementation 'ai.picovoice:orca-android:1.1.0'
117117

118118
// Espresso UI Testing
119119
androidTestImplementation 'androidx.test.ext:junit:1.1.5'

binding/android/OrcaTestApp/orca-test-app/src/androidTest/java/ai/picovoice/orca/testapp/PerformanceTest.java

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,9 @@ public class PerformanceTest extends BaseTest {
3838
@Parameterized.Parameter(value = 0)
3939
public String modelFile;
4040

41+
@Parameterized.Parameter(value = 1)
42+
public String procSentence;
43+
4144
@Parameterized.Parameters(name = "{0}")
4245
public static Collection<Object[]> initParameters() throws IOException {
4346
String testDataJsonString = getTestDataString();
@@ -48,10 +51,12 @@ public static Collection<Object[]> initParameters() throws IOException {
4851
final JsonArray testCases = testDataJson.getAsJsonObject("tests").get("sentence_tests").getAsJsonArray();
4952
JsonObject testCase = testCases.get(0).getAsJsonObject();
5053

54+
String text = testCase.get("text").getAsString();
55+
5156
List<Object[]> parameters = new ArrayList<>();
5257
for (JsonElement modelJson : testCase.get("models").getAsJsonArray()) {
5358
String model = modelJson.getAsString();
54-
parameters.add(new Object[]{model});
59+
parameters.add(new Object[]{model, text});
5560
}
5661
return parameters;
5762
}
@@ -76,13 +81,9 @@ public void testProcPerformance() throws Exception {
7681
Assume.assumeFalse(procThresholdString.equals(""));
7782

7883
final double procPerformanceThresholdSec = Double.parseDouble(procThresholdString);
79-
final String procSentence = testJson
80-
.getAsJsonObject("test_sentences")
81-
.get("text")
82-
.getAsString();
8384
final Orca orca = new Orca.Builder()
8485
.setAccessKey(accessKey)
85-
.setModelPath(modelFile)
86+
.setModelPath(getModelFilepath(modelFile))
8687
.build(appContext);
8788

8889
long totalNSec = 0;

binding/android/OrcaTestApp/orca-test-app/src/main/java/ai/picovoice/orca/testapp/MainActivity.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/*
2-
Copyright 2024 Picovoice Inc.
2+
Copyright 2024-2025 Picovoice Inc.
33
44
You may not use this file except in compliance with the license. A copy of the license is
55
located in the "LICENSE" file accompanying this source.
@@ -61,7 +61,7 @@ public void runTest() {
6161

6262
ArrayList<TestResult> results = new ArrayList<>();
6363

64-
final String modelFile = "models/orca_params_female.pv";
64+
final String modelFile = "models/orca_params_en_female.pv";
6565

6666
TestResult result = new TestResult();
6767
result.testName = "Test Init";

binding/android/README.md

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -137,10 +137,11 @@ The pronunciation is expressed in [ARPAbet](https://en.wikipedia.org/wiki/ARPABE
137137
- "{read|R IY D} this as {read|R EH D}, please."
138138
- "I {live|L IH V} in {Sevilla|S EH V IY Y AH}. We have great {live|L AY V} sports!"
139139

140-
### Voices
140+
### Language and Voice
141141

142-
Orca can synthesize speech with various voices, each of which is characterized by a model file located
143-
in [lib/common](../../lib/common).
142+
Orca Streaming Text-to-Speech can synthesize speech in different languages and with a variety of voices,
143+
each of which is characterized by a model file (`.pv`) located in [lib/common](../../lib/common).
144+
The language and gender of the speaker is indicated in the file name.
144145

145146
To add the Orca model file to your Android application:
146147

binding/dotnet/Orca/Orca.cs

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -404,6 +404,7 @@ public short[] Synthesize(string text)
404404
pv_orca_pcm_delete(cPcm);
405405

406406
}
407+
407408
return pcm;
408409
}
409410

@@ -437,9 +438,14 @@ public short[] Flush()
437438
HandlePvStatus(status, "Orca stream flush failed");
438439
}
439440

440-
short[] pcm = new short[numSamples];
441-
Marshal.Copy(cPcm, pcm, 0, numSamples);
442-
pv_orca_pcm_delete(cPcm);
441+
short[] pcm = null;
442+
if (numSamples > 0)
443+
{
444+
pcm = new short[numSamples];
445+
Marshal.Copy(cPcm, pcm, 0, numSamples);
446+
pv_orca_pcm_delete(cPcm);
447+
448+
}
443449

444450
return pcm;
445451
}

0 commit comments

Comments
 (0)