Skip to content

Commit b43441c

Browse files
authored
Merge pull request #834 from ftnext/refactor/audiodata-factory-method
refactor: Extract logic as AudioData.from_file()
2 parents ba696ed + 4e35d4b commit b43441c

File tree

9 files changed

+42
-60
lines changed

9 files changed

+42
-60
lines changed

examples/audio_transcribe.py

+1-3
Original file line numberDiff line numberDiff line change
@@ -7,11 +7,9 @@
77
AUDIO_FILE = path.join(path.dirname(path.realpath(__file__)), "english.wav")
88
# AUDIO_FILE = path.join(path.dirname(path.realpath(__file__)), "french.aiff")
99
# AUDIO_FILE = path.join(path.dirname(path.realpath(__file__)), "chinese.flac")
10+
audio = sr.AudioData.from_file(AUDIO_FILE)
1011

11-
# use the audio file as the audio source
1212
r = sr.Recognizer()
13-
with sr.AudioFile(AUDIO_FILE) as source:
14-
audio = r.record(source) # read the entire audio file
1513

1614
# recognize speech using Sphinx
1715
try:

examples/extended_results.py

+1-3
Original file line numberDiff line numberDiff line change
@@ -10,11 +10,9 @@
1010
AUDIO_FILE = path.join(path.dirname(path.realpath(__file__)), "english.wav")
1111
# AUDIO_FILE = path.join(path.dirname(path.realpath(__file__)), "french.aiff")
1212
# AUDIO_FILE = path.join(path.dirname(path.realpath(__file__)), "chinese.flac")
13+
audio = sr.AudioData.from_file(AUDIO_FILE)
1314

14-
# use the audio file as the audio source
1515
r = sr.Recognizer()
16-
with sr.AudioFile(AUDIO_FILE) as source:
17-
audio = r.record(source) # read the entire audio file
1816

1917
# recognize speech using Sphinx
2018
try:

examples/special_recognizer_features.py

+2-5
Original file line numberDiff line numberDiff line change
@@ -5,13 +5,10 @@
55
from os import path
66
AUDIO_FILE_EN = path.join(path.dirname(path.realpath(__file__)), "english.wav")
77
AUDIO_FILE_FR = path.join(path.dirname(path.realpath(__file__)), "french.aiff")
8+
audio_en = sr.AudioData.from_file(AUDIO_FILE_EN)
9+
audio_fr = sr.AudioData.from_file(AUDIO_FILE_FR)
810

9-
# use the audio file as the audio source
1011
r = sr.Recognizer()
11-
with sr.AudioFile(AUDIO_FILE_EN) as source:
12-
audio_en = r.record(source) # read the entire audio file
13-
with sr.AudioFile(AUDIO_FILE_FR) as source:
14-
audio_fr = r.record(source) # read the entire audio file
1512

1613
# recognize keywords using Sphinx
1714
try:

speech_recognition/audio.py

+11
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
1+
from __future__ import annotations
2+
13
import aifc
24
import audioop
35
import io
@@ -31,6 +33,15 @@ def __init__(self, frame_data, sample_rate, sample_width):
3133
self.sample_rate = sample_rate
3234
self.sample_width = int(sample_width)
3335

36+
@classmethod
37+
def from_file(cls, file_path: str) -> AudioData:
38+
"""Creates a new ``AudioData`` instance from an audio file."""
39+
import speech_recognition as sr
40+
41+
r = sr.Recognizer()
42+
with sr.AudioFile(file_path) as source:
43+
return r.record(source)
44+
3445
def get_segment(self, start_ms=None, end_ms=None):
3546
"""
3647
Returns a new ``AudioData`` instance, trimmed to a given time interval. In other words, an ``AudioData`` instance with the same audio data except starting at ``start_ms`` milliseconds in and ending ``end_ms`` milliseconds in.

speech_recognition/recognizers/whisper_api/openai.py

+1-4
Original file line numberDiff line numberDiff line change
@@ -70,10 +70,7 @@ def recognize(
7070
parser.add_argument("-l", "--language")
7171
args = parser.parse_args()
7272

73-
r = sr.Recognizer()
74-
with sr.AudioFile(args.audio_file) as source:
75-
audio_data = r.listen(source)
76-
73+
audio_data = sr.AudioData.from_file(args.audio_file)
7774
if args.language:
7875
transcription = recognize(
7976
None, audio_data, model=args.model, language=args.language

speech_recognition/recognizers/whisper_local/faster_whisper.py

+1-4
Original file line numberDiff line numberDiff line change
@@ -98,9 +98,6 @@ def recognize(
9898
parser.add_argument("audio_file")
9999
args = parser.parse_args()
100100

101-
r = sr.Recognizer()
102-
with sr.AudioFile(args.audio_file) as source:
103-
audio_data = r.listen(source)
104-
101+
audio_data = sr.AudioData.from_file(args.audio_file)
105102
transcription = recognize(None, audio_data)
106103
print(transcription)

tests/test_audio.py

+15-31
Original file line numberDiff line numberDiff line change
@@ -13,32 +13,28 @@ def assertSimilar(self, bytes_1, bytes_2):
1313
raise AssertionError("{} is really different from {} at index {}".format(bytes_1, bytes_2, i))
1414

1515
def test_get_segment(self):
16-
r = sr.Recognizer()
17-
with sr.AudioFile(path.join(path.dirname(path.realpath(__file__)), "audio-mono-32-bit-44100Hz.wav")) as source: audio = r.record(source)
16+
audio = sr.AudioData.from_file(path.join(path.dirname(path.realpath(__file__)), "audio-mono-32-bit-44100Hz.wav"))
1817
self.assertEqual(audio.get_raw_data(), audio.get_segment().get_raw_data())
1918
self.assertEqual(audio.get_raw_data()[8:], audio.get_segment(0.022675738 * 2).get_raw_data())
2019
self.assertEqual(audio.get_raw_data()[:16], audio.get_segment(None, 0.022675738 * 4).get_raw_data())
2120
self.assertEqual(audio.get_raw_data()[8:16], audio.get_segment(0.022675738 * 2, 0.022675738 * 4).get_raw_data())
2221

2322
def test_wav_mono_8_bit(self):
24-
r = sr.Recognizer()
25-
with sr.AudioFile(path.join(path.dirname(path.realpath(__file__)), "audio-mono-8-bit-44100Hz.wav")) as source: audio = r.record(source)
23+
audio = sr.AudioData.from_file(path.join(path.dirname(path.realpath(__file__)), "audio-mono-8-bit-44100Hz.wav"))
2624
self.assertIsInstance(audio, sr.AudioData)
2725
self.assertEqual(audio.sample_rate, 44100)
2826
self.assertEqual(audio.sample_width, 1)
2927
self.assertSimilar(audio.get_raw_data()[:32], b"\x00\xff\x00\xff\x00\xff\xff\x00\xff\x00\xff\x00\xff\x00\x00\xff\x00\x00\xff\x00\xff\x00\xff\x00\xff\x00\xff\x00\xff\x00\xff\xff")
3028

3129
def test_wav_mono_16_bit(self):
32-
r = sr.Recognizer()
33-
with sr.AudioFile(path.join(path.dirname(path.realpath(__file__)), "audio-mono-16-bit-44100Hz.wav")) as source: audio = r.record(source)
30+
audio = sr.AudioData.from_file(path.join(path.dirname(path.realpath(__file__)), "audio-mono-16-bit-44100Hz.wav"))
3431
self.assertIsInstance(audio, sr.AudioData)
3532
self.assertEqual(audio.sample_rate, 44100)
3633
self.assertEqual(audio.sample_width, 2)
3734
self.assertSimilar(audio.get_raw_data()[:32], b"\x00\x00\xff\xff\x01\x00\xff\xff\x00\x00\x01\x00\xfe\xff\x01\x00\xfe\xff\x04\x00\xfc\xff\x04\x00\xfe\xff\xff\xff\x03\x00\xfe\xff")
3835

3936
def test_wav_mono_24_bit(self):
40-
r = sr.Recognizer()
41-
with sr.AudioFile(path.join(path.dirname(path.realpath(__file__)), "audio-mono-24-bit-44100Hz.wav")) as source: audio = r.record(source)
37+
audio = sr.AudioData.from_file(path.join(path.dirname(path.realpath(__file__)), "audio-mono-24-bit-44100Hz.wav"))
4238
self.assertIsInstance(audio, sr.AudioData)
4339
self.assertEqual(audio.sample_rate, 44100)
4440
if audio.sample_width == 3:
@@ -47,33 +43,28 @@ def test_wav_mono_24_bit(self):
4743
self.assertSimilar(audio.get_raw_data()[:32], b"\x00\x00\x00\x00\x00\x00\xff\xff\x00\x00\x01\x00\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\xfe\xff\x00\x00\x01\x00")
4844

4945
def test_wav_mono_32_bit(self):
50-
r = sr.Recognizer()
51-
audio_file_path = path.join(path.dirname(path.realpath(__file__)), "audio-mono-32-bit-44100Hz.wav")
52-
with sr.AudioFile(audio_file_path) as source: audio = r.record(source)
46+
audio = sr.AudioData.from_file(path.join(path.dirname(path.realpath(__file__)), "audio-mono-32-bit-44100Hz.wav"))
5347
self.assertIsInstance(audio, sr.AudioData)
5448
self.assertEqual(audio.sample_rate, 44100)
5549
self.assertEqual(audio.sample_width, 4)
5650
self.assertSimilar(audio.get_raw_data()[:32], b"\x00\x00\x00\x00\x00\x00\xff\xff\x00\x00\x01\x00\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\xfe\xff\x00\x00\x01\x00")
5751

5852
def test_wav_stereo_8_bit(self):
59-
r = sr.Recognizer()
60-
with sr.AudioFile(path.join(path.dirname(path.realpath(__file__)), "audio-stereo-8-bit-44100Hz.wav")) as source: audio = r.record(source)
53+
audio = sr.AudioData.from_file(path.join(path.dirname(path.realpath(__file__)), "audio-stereo-8-bit-44100Hz.wav"))
6154
self.assertIsInstance(audio, sr.AudioData)
6255
self.assertEqual(audio.sample_rate, 44100)
6356
self.assertEqual(audio.sample_width, 1)
6457
self.assertSimilar(audio.get_raw_data()[:32], b"\x00\xff\x00\xff\x00\x00\xff\x7f\x7f\x00\xff\x00\xff\x00\x00\xff\x00\x7f\x7f\x7f\x00\x00\xff\x00\xff\x00\xff\x00\x7f\x7f\x7f\x7f")
6558

6659
def test_wav_stereo_16_bit(self):
67-
r = sr.Recognizer()
68-
with sr.AudioFile(path.join(path.dirname(path.realpath(__file__)), "audio-stereo-16-bit-44100Hz.wav")) as source: audio = r.record(source)
60+
audio = sr.AudioData.from_file(path.join(path.dirname(path.realpath(__file__)), "audio-stereo-16-bit-44100Hz.wav"))
6961
self.assertIsInstance(audio, sr.AudioData)
7062
self.assertEqual(audio.sample_rate, 44100)
7163
self.assertEqual(audio.sample_width, 2)
7264
self.assertSimilar(audio.get_raw_data()[:32], b"\x02\x00\xfb\xff\x04\x00\xfe\xff\xfe\xff\x07\x00\xf6\xff\x07\x00\xf9\xff\t\x00\xf5\xff\x0c\x00\xf8\xff\x02\x00\x04\x00\xfa\xff")
7365

7466
def test_wav_stereo_24_bit(self):
75-
r = sr.Recognizer()
76-
with sr.AudioFile(path.join(path.dirname(path.realpath(__file__)), "audio-stereo-24-bit-44100Hz.wav")) as source: audio = r.record(source)
67+
audio = sr.AudioData.from_file(path.join(path.dirname(path.realpath(__file__)), "audio-stereo-24-bit-44100Hz.wav"))
7768
self.assertIsInstance(audio, sr.AudioData)
7869
self.assertEqual(audio.sample_rate, 44100)
7970
if audio.sample_width == 3:
@@ -82,40 +73,35 @@ def test_wav_stereo_24_bit(self):
8273
self.assertSimilar(audio.get_raw_data()[:32], b"\x00\x00\x00\x00\x00\x00\xfe\xff\x00\x00\x02\x00\x00\x00\xfe\xff\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\xfc\xff\x00\x00\x02\x00")
8374

8475
def test_wav_stereo_32_bit(self):
85-
r = sr.Recognizer()
86-
with sr.AudioFile(path.join(path.dirname(path.realpath(__file__)), "audio-stereo-32-bit-44100Hz.wav")) as source: audio = r.record(source)
76+
audio = sr.AudioData.from_file(path.join(path.dirname(path.realpath(__file__)), "audio-stereo-32-bit-44100Hz.wav"))
8777
self.assertIsInstance(audio, sr.AudioData)
8878
self.assertEqual(audio.sample_rate, 44100)
8979
self.assertEqual(audio.sample_width, 4)
9080
self.assertSimilar(audio.get_raw_data()[:32], b"\x00\x00\x00\x00\x00\x00\xfe\xff\x00\x00\x02\x00\x00\x00\xfe\xff\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\xfc\xff\x00\x00\x02\x00")
9181

9282
def test_aiff_mono_16_bit(self):
93-
r = sr.Recognizer()
94-
with sr.AudioFile(path.join(path.dirname(path.realpath(__file__)), "audio-mono-16-bit-44100Hz.aiff")) as source: audio = r.record(source)
83+
audio = sr.AudioData.from_file(path.join(path.dirname(path.realpath(__file__)), "audio-mono-16-bit-44100Hz.aiff"))
9584
self.assertIsInstance(audio, sr.AudioData)
9685
self.assertEqual(audio.sample_rate, 44100)
9786
self.assertEqual(audio.sample_width, 2)
9887
self.assertSimilar(audio.get_raw_data()[:32], b"\x00\x00\x00\x00\xff\xff\x01\x00\xff\xff\x01\x00\xfe\xff\x02\x00\xfd\xff\x04\x00\xfc\xff\x03\x00\x00\x00\xfe\xff\x03\x00\xfd\xff")
9988

10089
def test_aiff_stereo_16_bit(self):
101-
r = sr.Recognizer()
102-
with sr.AudioFile(path.join(path.dirname(path.realpath(__file__)), "audio-stereo-16-bit-44100Hz.aiff")) as source: audio = r.record(source)
90+
audio = sr.AudioData.from_file(path.join(path.dirname(path.realpath(__file__)), "audio-stereo-16-bit-44100Hz.aiff"))
10391
self.assertIsInstance(audio, sr.AudioData)
10492
self.assertEqual(audio.sample_rate, 44100)
10593
self.assertEqual(audio.sample_width, 2)
10694
self.assertSimilar(audio.get_raw_data()[:32], b"\x00\x00\xfe\xff\x02\x00\xfe\xff\xff\xff\x04\x00\xfa\xff\x04\x00\xfa\xff\t\x00\xf6\xff\n\x00\xfa\xff\xff\xff\x08\x00\xf5\xff")
10795

10896
def test_flac_mono_16_bit(self):
109-
r = sr.Recognizer()
110-
with sr.AudioFile(path.join(path.dirname(path.realpath(__file__)), "audio-mono-16-bit-44100Hz.flac")) as source: audio = r.record(source)
97+
audio = sr.AudioData.from_file(path.join(path.dirname(path.realpath(__file__)), "audio-mono-16-bit-44100Hz.flac"))
11198
self.assertIsInstance(audio, sr.AudioData)
11299
self.assertEqual(audio.sample_rate, 44100)
113100
self.assertEqual(audio.sample_width, 2)
114101
self.assertSimilar(audio.get_raw_data()[:32], b"\x00\x00\xff\xff\x01\x00\xff\xff\x00\x00\x01\x00\xfe\xff\x02\x00\xfc\xff\x06\x00\xf9\xff\x06\x00\xfe\xff\xfe\xff\x05\x00\xfa\xff")
115102

116103
def test_flac_mono_24_bit(self):
117-
r = sr.Recognizer()
118-
with sr.AudioFile(path.join(path.dirname(path.realpath(__file__)), "audio-mono-24-bit-44100Hz.flac")) as source: audio = r.record(source)
104+
audio = sr.AudioData.from_file(path.join(path.dirname(path.realpath(__file__)), "audio-mono-24-bit-44100Hz.flac"))
119105
self.assertIsInstance(audio, sr.AudioData)
120106
self.assertEqual(audio.sample_rate, 44100)
121107
if audio.sample_width == 3:
@@ -124,16 +110,14 @@ def test_flac_mono_24_bit(self):
124110
self.assertSimilar(audio.get_raw_data()[:32], b"\x00\x00\x00\x00\x00\xff\xfe\xff\x00\x02\x01\x00\x00\xfd\xfe\xff\x00\x04\x00\x00\x00\xfc\x00\x00\x00\x04\xfe\xff\x00\xfb\x00\x00")
125111

126112
def test_flac_stereo_16_bit(self):
127-
r = sr.Recognizer()
128-
with sr.AudioFile(path.join(path.dirname(path.realpath(__file__)), "audio-stereo-16-bit-44100Hz.flac")) as source: audio = r.record(source)
113+
audio = sr.AudioData.from_file(path.join(path.dirname(path.realpath(__file__)), "audio-stereo-16-bit-44100Hz.flac"))
129114
self.assertIsInstance(audio, sr.AudioData)
130115
self.assertEqual(audio.sample_rate, 44100)
131116
self.assertEqual(audio.sample_width, 2)
132117
self.assertSimilar(audio.get_raw_data()[:32], b"\xff\xff\xff\xff\x02\x00\xfe\xff\x00\x00\x01\x00\xfd\xff\x01\x00\xff\xff\x04\x00\xfa\xff\x05\x00\xff\xff\xfd\xff\x08\x00\xf6\xff")
133118

134119
def test_flac_stereo_24_bit(self):
135-
r = sr.Recognizer()
136-
with sr.AudioFile(path.join(path.dirname(path.realpath(__file__)), "audio-stereo-24-bit-44100Hz.flac")) as source: audio = r.record(source)
120+
audio = sr.AudioData.from_file(path.join(path.dirname(path.realpath(__file__)), "audio-stereo-24-bit-44100Hz.flac"))
137121
self.assertIsInstance(audio, sr.AudioData)
138122
self.assertEqual(audio.sample_rate, 44100)
139123
if audio.sample_width == 3:

tests/test_recognition.py

+9-9
Original file line numberDiff line numberDiff line change
@@ -31,56 +31,56 @@ def test_recognizer_attributes(self):
3131

3232
@unittest.skipIf(sys.platform.startswith("win"), "skip on Windows")
3333
def test_sphinx_english(self):
34+
audio = sr.AudioData.from_file(self.AUDIO_FILE_EN)
3435
r = sr.Recognizer()
35-
with sr.AudioFile(self.AUDIO_FILE_EN) as source: audio = r.record(source)
3636
self.assertEqual(r.recognize_sphinx(audio), "one two three")
3737

3838
@unittest.skipUnless("WIT_AI_KEY" in os.environ, "requires Wit.ai key to be specified in WIT_AI_KEY environment variable")
3939
def test_wit_english(self):
40+
audio = sr.AudioData.from_file(self.AUDIO_FILE_EN)
4041
r = sr.Recognizer()
41-
with sr.AudioFile(self.AUDIO_FILE_EN) as source: audio = r.record(source)
4242
self.assertEqual(r.recognize_wit(audio, key=os.environ["WIT_AI_KEY"]), "one two three")
4343

4444
@unittest.skipUnless("BING_KEY" in os.environ, "requires Microsoft Bing Voice Recognition key to be specified in BING_KEY environment variable")
4545
def test_bing_english(self):
46+
audio = sr.AudioData.from_file(self.AUDIO_FILE_EN)
4647
r = sr.Recognizer()
47-
with sr.AudioFile(self.AUDIO_FILE_EN) as source: audio = r.record(source)
4848
self.assertEqual(r.recognize_bing(audio, key=os.environ["BING_KEY"]), "123.")
4949

5050
@unittest.skipUnless("BING_KEY" in os.environ, "requires Microsoft Bing Voice Recognition key to be specified in BING_KEY environment variable")
5151
def test_bing_french(self):
52+
audio = sr.AudioData.from_file(self.AUDIO_FILE_FR)
5253
r = sr.Recognizer()
53-
with sr.AudioFile(self.AUDIO_FILE_FR) as source: audio = r.record(source)
5454
self.assertEqual(r.recognize_bing(audio, key=os.environ["BING_KEY"], language="fr-FR"), u"Essaye la dictée numéro un.")
5555

5656
@unittest.skipUnless("BING_KEY" in os.environ, "requires Microsoft Bing Voice Recognition key to be specified in BING_KEY environment variable")
5757
def test_bing_chinese(self):
58+
audio = sr.AudioData.from_file(self.AUDIO_FILE_ZH)
5859
r = sr.Recognizer()
59-
with sr.AudioFile(self.AUDIO_FILE_ZH) as source: audio = r.record(source)
6060
self.assertEqual(r.recognize_bing(audio, key=os.environ["BING_KEY"], language="zh-CN"), u"砸自己的脚。")
6161

6262
@unittest.skipUnless("HOUNDIFY_CLIENT_ID" in os.environ and "HOUNDIFY_CLIENT_KEY" in os.environ, "requires Houndify client ID and client key to be specified in HOUNDIFY_CLIENT_ID and HOUNDIFY_CLIENT_KEY environment variables")
6363
def test_houndify_english(self):
64+
audio = sr.AudioData.from_file(self.AUDIO_FILE_EN)
6465
r = sr.Recognizer()
65-
with sr.AudioFile(self.AUDIO_FILE_EN) as source: audio = r.record(source)
6666
self.assertEqual(r.recognize_houndify(audio, client_id=os.environ["HOUNDIFY_CLIENT_ID"], client_key=os.environ["HOUNDIFY_CLIENT_KEY"]), "one two three")
6767

6868
@unittest.skipUnless("IBM_USERNAME" in os.environ and "IBM_PASSWORD" in os.environ, "requires IBM Speech to Text username and password to be specified in IBM_USERNAME and IBM_PASSWORD environment variables")
6969
def test_ibm_english(self):
70+
audio = sr.AudioData.from_file(self.AUDIO_FILE_EN)
7071
r = sr.Recognizer()
71-
with sr.AudioFile(self.AUDIO_FILE_EN) as source: audio = r.record(source)
7272
self.assertEqual(r.recognize_ibm(audio, username=os.environ["IBM_USERNAME"], password=os.environ["IBM_PASSWORD"]), "one two three ")
7373

7474
@unittest.skipUnless("IBM_USERNAME" in os.environ and "IBM_PASSWORD" in os.environ, "requires IBM Speech to Text username and password to be specified in IBM_USERNAME and IBM_PASSWORD environment variables")
7575
def test_ibm_french(self):
76+
audio = sr.AudioData.from_file(self.AUDIO_FILE_FR)
7677
r = sr.Recognizer()
77-
with sr.AudioFile(self.AUDIO_FILE_FR) as source: audio = r.record(source)
7878
self.assertEqual(r.recognize_ibm(audio, username=os.environ["IBM_USERNAME"], password=os.environ["IBM_PASSWORD"], language="fr-FR"), u"si la dictée numéro un ")
7979

8080
@unittest.skipUnless("IBM_USERNAME" in os.environ and "IBM_PASSWORD" in os.environ, "requires IBM Speech to Text username and password to be specified in IBM_USERNAME and IBM_PASSWORD environment variables")
8181
def test_ibm_chinese(self):
82+
audio = sr.AudioData.from_file(self.AUDIO_FILE_ZH)
8283
r = sr.Recognizer()
83-
with sr.AudioFile(self.AUDIO_FILE_ZH) as source: audio = r.record(source)
8484
self.assertEqual(r.recognize_ibm(audio, username=os.environ["IBM_USERNAME"], password=os.environ["IBM_PASSWORD"], language="zh-CN"), u"砸 自己 的 脚 ")
8585

8686

tests/test_special_features.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -15,8 +15,8 @@ def setUp(self):
1515

1616
@unittest.skipIf(sys.platform.startswith("win"), "skip on Windows")
1717
def test_sphinx_keywords(self):
18+
audio = sr.AudioData.from_file(self.AUDIO_FILE_EN)
1819
r = sr.Recognizer()
19-
with sr.AudioFile(self.AUDIO_FILE_EN) as source: audio = r.record(source)
2020
self.assertEqual(r.recognize_sphinx(audio, keyword_entries=[("one", 1.0), ("two", 1.0), ("three", 1.0)]), "three two one")
2121
# pocketsphinx < 5 recognizes tree but pocketsphinx >= 5 ignores it (TODO need to research why)
2222
self.assertEqual(r.recognize_sphinx(audio, keyword_entries=[("wan", 0.95), ("too", 1.0), ("tree", 1.0)]), "too wan")

0 commit comments

Comments
 (0)