|
|
今天我们将使用Python构建演示TARS。TARS可以帮助您自动执行任务,例如在YouTube中搜索视频并播放,发送电子邮件,打开网站,在Wikipedia中搜索材料并阅读它们,通知您所在国家的天气预报,问候等等。通过构建TARS,将增加您的Python知识,并学习许多有用的工具。想知道如何使用Python构建TARS,首先让我们首先创建虚拟环境并构建TARS的基本音频系统。% _6 c% f" d6 G# F* j" `" n8 f
- <p> mkdirTARS</p>2 ?1 u" }0 Y- L$ _
- <p> cdTARS</p>
, D0 d. E) B5 [4 Z! O2 z* t* z - <p> virtualenvvenv</p>
复制代码 3 p" s. F/ ^5 i4 K" }3 E/ D. V
要激活下面的venvrun命令
. x4 j/ J! c5 ^/ B5 E! t0 w0 o1 o1 X! ]3 P' u( W2 }. o! |
什么是虚拟环境?
* G! Q y5 M# X( T e' b2 j/ I 激活venv后,我们需要通过以下命令安装主库:
: ?2 c0 ]) w( U. U. r" t pip3installgTTSSpeechRecognitionPyAudiopygame) s( ?7 g. o7 R# T. _, \* `
gTTS是一个Python库和CLI工具,可与GoogleTranslate的文本到语音API交互。此模块有助于将字符串文本转换为语音文本,并可以另存为.mp3
) v7 W% L$ c$ @& U! g6 Q0 @+ [ 语音识别是家庭自动化,人工智能等多种应用中的重要功能。语音识别需要音频输入,而语音识别使检索此输入变得非常简单。无需从头开始构建脚本来访问麦克风并处理音频文件,SpeechRecognition只需几分钟即可让您启动并运行。
7 p" |( C1 T2 H/ ^; @ 要使用SpeechRecognizer访问麦克风,您必须安装PyAudio软件包
: B- c9 R5 J# d* s/ e; i Pygame是一组跨平台的Python模块,旨在编写视频游戏。它包括旨在与Python编程语言一起使用的计算机图形和声音库。$ ^1 n4 t4 S+ x8 b8 H: ?
现在,让我们构建TARS的语音系统:
+ H+ x/ B! K5 G0 F1 E- <p> fromgttsimportgTTS</p>
* L0 v' r$ ]8 k7 Z u; u - <p> importspeech_recognitionassr</p>2 E# ^. k0 C- S2 d/ J% y
- <p> frompygameimportmixer</p>
3 O) D8 d! g+ B5 L4 {5 m3 j2 L9 O - <p> deftalk(audio):</p>
) U C% k& x7 G. z/ x9 s - <p> print(audio)</p>4 s( L7 P/ |3 Q
- <p> forlineinaudio.splitlines():</p>0 V3 Y; V0 b1 f; O; Y: u& p
- <p> text_to_speech=gTTS(text=audio,lang='en-uk')</p>
3 K* R3 j7 \, ]5 H$ d, X - <p> text_to_speech.save('audio.mp3')</p> f3 I/ m. [ H0 O3 C
- <p> mixer.init()</p>
' N0 J+ Z) {) B, H6 n& F$ t6 ~$ R - <p> mixer.music.load("audio.mp3")</p>
+ i9 ^# h. e9 ], N" }8 b- u0 Q - <p> mixer.music.play()</p>
复制代码 ) i. \. p$ I( e; C p0 h5 c% s
我们通过音频作为使TARS说话的一种论据。例如talk程序将在splitlines()方法的帮助下循环这些行。此方法用于在线边界处分割线。检查splitlines()了解更多。然后,gTTS将处理所有这些文本转换为语音。text参数定义要读取的文本,lang定义用于读取文本的语言(IETF语言标签)。循环完成后,save()方法将结果写入文件。
- g9 |/ g% j, ]" Z2 F6 [ pygame.mixer是用于加载和播放声音的模块,必须在使用之前进行初始化。
1 `* r) u2 f; g3 v; r) S$ i( Z 现在,让我们创建一个监听命令的函数:& i6 J1 W w V9 o6 L: E9 i8 E$ X
- <p> defmyCommand():</p>8 L3 `5 a8 ^4 Q
- <p> #Initializetherecognizer</p>: t) C5 w3 J- L( J7 n
- <p> r=sr.Recognizer()</p>
% d6 S9 R' `7 Z+ i - <p> withsr.Microphone()assource:</p>
; H: _5 u X {' i - <p> print('TARSisReady...')</p>
9 Y. q# G6 h7 {! z: Q - <p> r.pause_threshold=1</p>
1 [% T f9 ~9 X - <p> #waitforasecondtolettherecognizeradjustthe</p>" x+ c0 S0 j+ e& H
- <p> #energythresholdbasedonthesurroundingnoiselevel</p>" L/ {& Z. l" s8 ?+ M @7 @/ q9 l* Y4 Z
- <p> r.adjust_for_ambient_noise(source,duration=1)</p>
4 L6 c& T! }5 `. F ~( H - <p> #listensfortheuser'sinput</p>
& @, C' X q/ g3 |, S' m* o$ A2 j& U - <p> audio=r.listen(source)</p>
+ k) f) P: V$ F - <p> try:</p>' `( ^$ b U6 L- |/ j: p4 ]
- <p> command=r.recognize_google(audio).lower()</p>( @6 i% U1 T G$ [ L5 o) L
- <p> print('Yousaid:'+command+'\n')</p>
- v* l9 b0 H! u# D) v3 q - <p> #loopbacktocontinuetolistenforcommandsifunrecognizablespeechisreceived</p>% \" M( i; O9 x2 c0 B$ R+ y5 D9 z
- <p> exceptsr.UnknownValueError:</p>2 T* R1 U* K* S$ q" n- E2 b0 ^# @
- <p> print('Yourlastcommandcouldn\'tbeheard')</p>
0 E% f6 P) Z1 \+ c2 X" c - <p> command=myCommand();</p>1 p6 V2 l' _7 [ V- g9 q
- <p> returncommand</p>
复制代码
3 S; e( Y9 p& ^0 e9 r4 E 在此功能中,我们使用了SpeechRecognition库。它充当几种流行语音API的包装,因此非常灵活。其中之一-GoogleWebSpeechAPI-支持默认API密钥,该密钥硬编码到SpeechRecognition库中。这意味着您可以不用注册服务就能站起来。9 g) G, O9 o3 e9 U( [
为了能够通过语音识别使用自己的声音,您需要PyAudio软件包。像用于音频文件的Recognizer一样,我们将需要使用Microphone来获取实时语音数据。
W5 P- n% n. D6 B9 f2 } 您可以使用with块内Recognizer类的listen()方法捕获来自麦克风的输入。此方法将音频源作为其第一个参数,并记录来自该源的输入,直到检测到静音为止。 M- i* L o L" c" Y% h
尝试在安静的地方说出您的命令,否则TARS可能会造成混淆。& t A) C9 I1 W* z# Y; I! B6 [& t
综上所述,对于如何使用Python构建TARS:Scratch的虚拟助手的信息,相信大家已经清楚了吧。3 V8 E( g9 f* |; A7 X
4 X( \6 a0 {- C0 Y |
|