|
|
今天我们将使用Python构建演示TARS。TARS可以帮助您自动执行任务,例如在YouTube中搜索视频并播放,发送电子邮件,打开网站,在Wikipedia中搜索材料并阅读它们,通知您所在国家的天气预报,问候等等。通过构建TARS,将增加您的Python知识,并学习许多有用的工具。想知道如何使用Python构建TARS,首先让我们首先创建虚拟环境并构建TARS的基本音频系统。6 v! k: H0 O' P( I, H9 v7 b
- <p> mkdirTARS</p>
2 R8 _0 t1 H' O- c0 X0 j9 L - <p> cdTARS</p>( \6 @5 W+ ^9 z4 D
- <p> virtualenvvenv</p>
复制代码
! a2 K$ v) `! O3 l' X1 H 要激活下面的venvrun命令
5 r! ]2 o0 E" | j; X( ?7 S: |3 M! E
" [& }! m5 @4 u; Z, c 什么是虚拟环境?
" c* q5 r& G2 k: j t 激活venv后,我们需要通过以下命令安装主库:
+ W& T9 D, ?7 R pip3installgTTSSpeechRecognitionPyAudiopygame
. l1 B. `, Z" @6 Q. D gTTS是一个Python库和CLI工具,可与GoogleTranslate的文本到语音API交互。此模块有助于将字符串文本转换为语音文本,并可以另存为.mp3
. \- |$ u3 X( C3 U/ W6 x6 C3 } 语音识别是家庭自动化,人工智能等多种应用中的重要功能。语音识别需要音频输入,而语音识别使检索此输入变得非常简单。无需从头开始构建脚本来访问麦克风并处理音频文件,SpeechRecognition只需几分钟即可让您启动并运行。0 b* a5 Q8 e6 f% t. J/ A' m7 a
要使用SpeechRecognizer访问麦克风,您必须安装PyAudio软件包
! _6 L3 |- G+ H- M5 e Pygame是一组跨平台的Python模块,旨在编写视频游戏。它包括旨在与Python编程语言一起使用的计算机图形和声音库。
* z- F7 w7 L9 ^8 }$ y 现在,让我们构建TARS的语音系统:" ?8 ?" c( T0 @. {+ y5 C6 ]9 ?
- <p> fromgttsimportgTTS</p>* J. ~1 c3 W3 k: ~# Z5 R
- <p> importspeech_recognitionassr</p>+ G ]5 S, }6 K" B0 h
- <p> frompygameimportmixer</p>$ u! a# X6 X7 ^/ _3 h- @% P
- <p> deftalk(audio):</p>+ w1 d% h# {. h/ y. o$ N/ o
- <p> print(audio)</p>/ j9 x2 t ?. V
- <p> forlineinaudio.splitlines():</p>
' w; y- S9 v. s/ u% G - <p> text_to_speech=gTTS(text=audio,lang='en-uk')</p>
; j. O( g3 ~8 J - <p> text_to_speech.save('audio.mp3')</p>
! [/ M; [' h s - <p> mixer.init()</p>
) l7 ~5 B" D* }- N/ D0 h - <p> mixer.music.load("audio.mp3")</p># H, W8 S D# i$ V% q
- <p> mixer.music.play()</p>
复制代码
( x$ X0 d! o. m! p 我们通过音频作为使TARS说话的一种论据。例如talk程序将在splitlines()方法的帮助下循环这些行。此方法用于在线边界处分割线。检查splitlines()了解更多。然后,gTTS将处理所有这些文本转换为语音。text参数定义要读取的文本,lang定义用于读取文本的语言(IETF语言标签)。循环完成后,save()方法将结果写入文件。
1 F* [6 i2 X0 L" {" ]/ g0 v \ pygame.mixer是用于加载和播放声音的模块,必须在使用之前进行初始化。# _# w8 i3 V3 l" f) k+ X! h* c
现在,让我们创建一个监听命令的函数:
p Z) J0 }) W) x, ^" ] t- <p> defmyCommand():</p># b/ M. h1 y2 p( V! U, @ O8 l' ]+ s
- <p> #Initializetherecognizer</p>
' E) A! z5 M6 i! B+ f - <p> r=sr.Recognizer()</p>1 ^+ M1 i$ L( `6 ^8 e& p
- <p> withsr.Microphone()assource:</p>
+ V9 l/ P" Y4 a; D - <p> print('TARSisReady...')</p>
2 f0 R a, y, e; F3 c, V# [2 { - <p> r.pause_threshold=1</p>
7 R& ~$ e) q, N) M - <p> #waitforasecondtolettherecognizeradjustthe</p>8 Q5 S {$ L* m( [0 \4 ~
- <p> #energythresholdbasedonthesurroundingnoiselevel</p>
8 h5 [5 B \% \: T, T% h# } - <p> r.adjust_for_ambient_noise(source,duration=1)</p>
0 A/ l, ]0 C6 z* [/ y/ V - <p> #listensfortheuser'sinput</p>( Q- y v O4 v1 ^' ~
- <p> audio=r.listen(source)</p>
2 t9 _; j: T$ P( w, @- |4 y3 c - <p> try:</p>1 H- q5 l) g# g% ^% H4 ]6 B
- <p> command=r.recognize_google(audio).lower()</p>7 T; H& I: x, R7 w4 C) R
- <p> print('Yousaid:'+command+'\n')</p>
w" E5 X. y" i* u* Q$ c - <p> #loopbacktocontinuetolistenforcommandsifunrecognizablespeechisreceived</p>% o$ s; E8 ?/ e) D0 r
- <p> exceptsr.UnknownValueError:</p>% x( n% `; p! r4 w! _- S
- <p> print('Yourlastcommandcouldn\'tbeheard')</p>
; `) }( r2 c& Q0 Y( ?' B8 g. S - <p> command=myCommand();</p>
- a. A3 i+ q2 h/ d# \3 O9 C3 n) l7 a - <p> returncommand</p>
复制代码 + `/ N/ k8 w0 h" y, ]/ Q L
在此功能中,我们使用了SpeechRecognition库。它充当几种流行语音API的包装,因此非常灵活。其中之一-GoogleWebSpeechAPI-支持默认API密钥,该密钥硬编码到SpeechRecognition库中。这意味着您可以不用注册服务就能站起来。
, h: A! Z) U: |8 h) K 为了能够通过语音识别使用自己的声音,您需要PyAudio软件包。像用于音频文件的Recognizer一样,我们将需要使用Microphone来获取实时语音数据。. r4 u: ~# ~) R& ~5 O2 r/ P$ T
您可以使用with块内Recognizer类的listen()方法捕获来自麦克风的输入。此方法将音频源作为其第一个参数,并记录来自该源的输入,直到检测到静音为止。, h' ]& u" E, V! r
尝试在安静的地方说出您的命令,否则TARS可能会造成混淆。
$ @3 r8 I* }( H8 P, |9 h% |( ]/ @ 综上所述,对于如何使用Python构建TARS:Scratch的虚拟助手的信息,相信大家已经清楚了吧。2 Q; K" d6 v3 o! z, b
3 Q2 i: @2 V. f2 e5 V% o0 y
|
|