0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

怎样通过树莓派上的Asterisk PBX运行Google语音助手

454398 来源:网络整理 作者:网络整理 2019-11-20 16:52 次阅读

第1步:要求

Raspberry Pi零,B +,2或3(请参见以下说明)

Raspian已安装Jessie并已通过Internet访问

Pi以太网或Wifi(最好是直接以太网)(最好是直接以太网)

SSH访问GitHub上的

软件:

https://github.com/rgrokett/RaspiAsteriskGoogle

一个SIP/VOIP电话(例如Grandstream GXP1620)或SoftPhone,例如:http://www.asteriskguru.com/tutorials/xlite_softp 。..点击HTTP://www.zoiper.com/en/voip-softphone/download/z 。..

注意 :尽管此方法可在Raspi Zero W上使用,但在Raspberry Pi 3上可运行得更好。

该项目假定您具有Raspian命令行,SSH的一些知识以及Asterisk PBX的一些初步知识。 。它还假定您具有配置了Raspian Jessie(精简版的Raspberry Pi)的Raspberry Pi,并已连接到网络。这不需要在Pi上使用GUI,因此假定无头操作和登录提示,终端或SSH访问。

步骤2:Pi上的Asterisk PBX配置

怎样通过树莓派上的Asterisk PBX运行Google语音助手

Pi需要出站Internet访问,但Asterisk PBX不需要任何外部SIP语音提供程序。该项目不使用呼入或呼出语音呼叫。

如果您从未使用过Asterisk,则可能应该查阅一些Asterisk教程。不过,这里不需要大多数信息。 http://www.asterisk.org/

请注意,它不使用“ FreePBX for Raspberry Pi”软件包,而只使用Raspian命令行安装版本。

该项目应在CLEAN RASPIAN JESSIE安装上完成。使用现有安装可能已经进行了一些修改,从而影响了Asterisk或Google SDK。

1)在Raspberry Pi上安装Asterisk PBX:

$ sudo apt-get update

$ sudo apt-get upgrade

$ sudo apt-get install asterisk git

依赖项很少,所以可能要花点时间!

2)从Github检索项目文件:(https://github.com/rgrokett/RaspiAsteriskGoogle)

$ cd /home/pi

$ git clone https://github.com/rgrokett/RaspiAsteriskGoogle.g.。.

3)更新Asterisk PBX,以添加此项目使用的SIP和分机条目。

$ cd /home/pi/RaspiAsteriskGoogle

$ bash 。/install.sh

注意 :

您将看到“ No client_secret.json…”和“ No Google API OAUTH…”错误消息,因为这些消息将在以后进行设置。暂时暂时忽略它们。

可以多次执行install.sh脚本。它将验证安装。

步骤3:将VOIP(SIP)电话添加到Asterisk PBX

4 )将SIP电话添加到您的星号。由于有很多方法可以做到这一点,所以我展示了一个通用配置。每个电话都有不同的选项,但这应该是所有需要的。

有关SIP(VOIP)软电话,请参阅前面的“要求”部分。 (基于PC的软件。需要带麦克风的耳机)或使用物理VOIP电话,例如Amazon的Grandstreams。低于50美元的廉价手机就可以了。

这将向Asterisk添加一个分机号为5310的SIP电话。请记住,这不包括呼入或呼出电话。仅内部通话。

使用以下选项配置您的SIP电话。大多数其他电话选项均未使用,因此通常可以忽略。

SIP Phone options:

SIP Proxy Server: 192.168.1.XX 《- The IP Address of your Raspi Pi $ hostname –I

Domain/Realm/Registration:

Username: 5310

Password: {blank}

请注意,您需要在电话的“扩展”部分中输入SIP代理IP(即Pi的IP地址)。 (某些电话具有多个分机,但该项目仅需要1。)

5)将SIP/VOIP电话摘机,看看是否可以获得拨号音。

如果是这样,请尝试在VOIP电话上拨打 1000#。您应该获得一个内置演示。

Debugging:

If you don’t get dial tone, your SIP Phone isn’t registering to your Asterisk server. Try the following:

a. Reboot the Raspberry and then the SIP phone to see if they reconnect.

b. Verify the files above are edited correctly.

c. Access Asterisk from command line:

$ sudo asterisk –r

CLI》 sip show peers

This should show your sip phone’s IP and status

Watch out for firewalls, particularly if using a softphone!

d. Verify IP addresses of the Sip Phone and Raspi and be sure you can ping the phone from the Raspi.

e. If still an issue, turn on SIP Debugging:

CLI》 sip set debug on

This will display SIP connection attempt messages. If you see nothing after a few minutes, then your SIP Phone isn’t even trying to talk to Asterisk. You need to dig into the SIP Phone’s setup instructions.

f. Asterisk log messages go to /var/log/asterisk/messages. But note there can be lots of nasty looking messages, most are for unused/unneeded features. So it can be difficult to decipher.

g. Google is your friend. Cut/paste any error messages you see into it to learn more!

步骤4:Google Assistant SDK安装

如果您已成功获得拨号音并“恭喜”演示,那么您现在可以使用Asterisk PBX!

现在,您需要在Google Developers网站上创建一个(免费)帐户,并安装其适用于Raspberry Pi的Python Google Assistant SDK。

摘录自Google Assistant SDK入门Raspberry Pi和Python:

https://developers.google.com/assistant/sdk/protot 。..

配置Google Developer Project

1)转到Google Projects页面:https://console.cloud.google.com/project

您可能需要创建Google Developers帐户或使用现有的Google( gmail)登录帐户凭据。

2)创建一个名为“ AsteriskSpeechAPI”的新项目(或您想要的任何所需名称)

3)为该项目启用Google Assistant API您选择了:

https://console.developers.google.com/apis/api/emb 。..

点击启用

4)创建一个Oauth客户端ID,其步骤如下:

a)创建客户端ID:https://console.developers.google.com/apis/creden 。..

b)如果询问,在上方输入与上面相同的项目名称OAuth同意屏幕选项卡上的产品名称,然后单击保存。

c)单击其他并为客户ID提供一个名称(再次与上面相同)没关系)。

d)单击创建。将会出现一个对话框,显示您的客户端ID和密码。

无需记住或保存该ID,只需关闭对话框即可。

e)单击最右侧的向下箭头。屏幕的顶部,以名为( client_secret_XXXX.json )

的JSON文件的形式下载客户端ID和密码(要再次重新获取凭据,请转到Google Assistant API管理器,上面的第3步,然后选择凭据,然后单击您项目的下载图标。)

f)将 client_secret_XXXX.json 文件复制到/home/pi/client_secret .json 在您的Raspi上。

(将其重命名为 client_secret.json )

您可以使用剪切/粘贴来执行此操作,如果您愿意:

$ cd /home/pi

$ nano /home/pi/client_secret.json

粘贴到编辑器中并保存

5)Google要求您与Google共享某些活动数据以使用其SDK。助手需要此信息才能正常运行。 (一旦不再希望使用Assistant SDK,可以再次关闭。)

a)转到“活动控件”页面:https://myaccount.google.com/activitycontrols

b)设置以下 ON (蓝色):

• Web & App Activity

• Location History

• Device Information

• Voice & Audio Activity

第5步:安装并编译Google Assistant Pi for Pi

1)获取Google Assistant Python SDK软件并安装:

在您的Raspi上,执行以下操作:

sudo apt-get update

sudo apt-get install python-dev

sudo apt-get install portaudio19-dev libffi-dev libssl-dev

sudo apt-get install python-pip

sudo python -m pip install --upgrade PySocks

sudo python -m pip install --upgrade google-auth-oauthlib[tool]

sudo python -m pip install --upgrade google-assistant-sdk

注意:在Pi Zero上,该代码可用于大约一个小时或更长时间,其中包含很多消息!

完成后,重新启动Pi:

$ sudo reboot

步骤6:设置Google OAUTH授权

1 )在您的Pi上,执行以下操作:

$ python -m google-oauthlib-tool --client-secrets /home/pi/client_secret.json --scope https://www.googleapis.com/auth/assistant-sdk-prototype --save --headless

您应该看到以下内容:

请转到以下URL:https://。.. Enter授权代码:

复制返回的长网址并将其粘贴到您的浏览器(任何PC上的任何浏览器)中。

选择用于设置项目的帐户。

批准后,浏览器中将显示一个代码,例如“ 4/XXXX ”。复制此代码并将此代码粘贴到Raspi终端中。它应显示如下:

已保存的凭证(和路径)

如果相反,它将显示: InvalidGrantError 输入了无效的代码。请重试,请小心复制并粘贴整个代码。

这会将您的oauth令牌保存到/home/pi/.config/googlesamples-assistant/assistant_credentials.json

第7步:测试Google Assistant SDK

1)执行测试程序:

$ cd /home/pi/RaspiAsteriskGoogle

$ bash 。/test.sh

您应该会看到类似以下的内容。

如果成功,这将发送一个将音频文件in.wav记录到Google助手,并收到音频文件out.wav响应。您可以将它们复制到PC上以在装有扬声器的Raspi上播放或播放。

Found client_secret.json OK

Found OAUTH assistant_credentials.json OK

Sending sample to Google Assistant API.。.

DEBUG:google.auth.transport.requests:Making request: POST https://accounts.google.com/o/oauth2/token

DEBUG:urllib3.connectionpool:Starting new HTTPS connection (1): accounts.google.com

DEBUG:urllib3.connectionpool:https://accounts.google.com:443 “POST /o/oauth2/token HTTP/1.1” 200 None

INFO:root:Connecting to embeddedassistant.googleapis.com

INFO:root:Recording audio request.

DEBUG:root:ConverseRequest: config {

audio_in_config {

encoding: LINEAR16

sample_rate_hertz: 16000

}

audio_out_config {

encoding: LINEAR16

sample_rate_hertz: 16000

volume_percentage: 50

}

}

DEBUG:root:ConverseRequest: audio_in (6400 bytes)

DEBUG:root:ConverseRequest: audio_in (6400 bytes)

DEBUG:root:ConverseRequest: audio_in (6400 bytes)

DEBUG:root:ConverseRequest: audio_in (6400 bytes)

DEBUG:root:ConverseRequest: audio_in (6400 bytes)

DEBUG:root:ConverseRequest: audio_in (6400 bytes)

DEBUG:root:ConverseRequest: audio_in (6400 bytes)

DEBUG:root:ConverseRequest: audio_in (6400 bytes)

DEBUG:root:ConverseRequest: audio_in (4096 bytes)

DEBUG:root:ConverseRequest: audio_in (3200 bytes)

…(more)

DEBUG:root:ConverseResponse: event_type: END_OF_UTTERANCE

INFO:root:End of audio request detected

DEBUG:root:ConverseResponse: result {

spoken_request_text: “what is the current weather”

}

DEBUG:root:ConverseRequest: audio_in (3200 bytes)

INFO:root:Transcript of user request: “what is the current weather”。

INFO:root:Playing assistant response.

DEBUG:root:ConverseResponse: result {

conversation_state: “ &C#590…6f7-0000-2231-932c-94e…3c9ba¸:Kj93Nlg1eVpmWWMGlLSURpYUpWdkpXb2hRUW43YnNIcmdBQUFDQ1RjV0… ”

microphone_mode: CLOSE_MICROPHONE

}

DEBUG:root:ConverseResponse: audio_data (1600 bytes)

DEBUG:root:ConverseResponse: audio_data (1600 bytes)

DEBUG:root:ConverseResponse: audio_data (1600 bytes)

DEBUG:root:ConverseResponse: audio_data (1600 bytes)

DEBUG:root:ConverseResponse: audio_data (1600 bytes)

DEBUG:root:ConverseResponse: audio_data (1600 bytes)

DEBUG:root:ConverseResponse: audio_data (1600 bytes)

DEBUG:root:ConverseResponse: audio_data (1600 bytes)

DEBUG:root:ConverseResponse: audio_data (1600 bytes)

DEBUG:root:ConverseResponse: audio_data (1600 bytes)

…(more)

DEBUG:root:ConverseResponse: audio_data (1044 bytes)

INFO:root:Finished playing assistant response.

AUDIO FILES:

-rw-r--r-- 1 pi pi 55340 Apr 30 17:02 in.wav

-rw-r--r-- 1 root root 252288 May 1 14:51 out.wav

If you have AUDIO on this Pi:

Verify Audio with:

$ speaker-test -t wav

Playback audio from Google:

$ aplay --format=S16_LE --rate=16k --file-type=wav out.wav

步骤8:现在,您可以尝试使用Asterisk PBX Google助手!

1。再次重新运行install.sh脚本,以确保OAUTH和客户端JSON正常:

$ cd /home/pi/RaspiAsteriskGoogle

$ bash 。/install.sh

2。重新启动Raspberry Pi。

3。使用您的SIP电话,拨号6666#

您应该先拨打音频,振铃,然后再输入语音提示。

如果要这样做,那就太好了!尝试向Google提问:

·现在几点了?

·乔治亚州亚特兰大的天气如何?

·地球有多大?

·在英国伦敦几点几点了?

·告诉我一个笑话

·等等……

注意:在Pi零,响应时间有5到7秒的延迟,部分原因是python SDK API开销。更快的Pi可以减少这种情况。

完成后就挂断电话。

第9步:故障排除指南

1)您确实获得了拨号音,并能够拨打Asterisk演示程序(1000#)了是吗?

2)在AGI程序中打开调试模式:

$ cd /home/pi/RaspiAsteriskGoogle

$ nano google.agi

Change my $debug = 0;

To my $debug = 1;

Save

$ bash 。/install.sh

3)访问Asterisk CLI进行调试:

$ sudo asterisk -r

CLI》 agi set debug on

CLI》 core set debug 4

4)再次拨打 6666#并查看消息。

5)您可以查看/home/pi/RaspiAsteriskGoogle/google.agi 用于将调试消息与代码匹配。请注意,除了消息

以外,Asterisk还显示许多其他调试信息。如果对Asterisk extensions.conf或sip.conf进行更改,则应重新启动Asterisk

CLI》 core restart now

如果您对google.agi进行了更改,请再次执行安装脚本以进行安装

$ bash 。/install.sh

6)如果电话响了无人接听,则extensions.conf在6666部分有问题。

如果您手动编辑了extensions.conf,则必须使用

CLI》 dialplan reload

重新加载。7)如果电话应答但没有音频,请确认星号目录中的文件由星号userid拥有:

sudo chown asterisk:asterisk /usr/share/asterisk/agi-bin/google.agi

sudo chown asterisk:asterisk /usr/share/asterisk/sounds/custom/google*.sln

8)查找在“ /tmp ”目录中创建的音频文件:

$ ls -l /tmp

-rw-rw---- 1 asterisk asterisk 32266 May 3 02:01 google_audio3424_8k.sln

-rw-rw---- 1 asterisk asterisk 73004 May 3 02:01 google_audio3424_in.wav

-rw-rw---- 1 asterisk asterisk 64576 May 3 02:01 google_audio3424_out.wav

-rw-rw---- 1 asterisk asterisk 6124 May 3 02:01 google_audio3441.wav

google_audio3441.wav -- Audio of your question

google_audio3424_in.wav -- Audio formatted for Google

google_audio3424_out.wav -- Audio response from Google

google_audio3424_8k.sln -- Audio formatted for Asterisk

9)如果您的问题没有得到Google的答复,请再次运行test.sh脚本以验证OAUTH令牌和SDK是否正确。

$ bash 。/test.sh

如果其他所有方法都失败,请执行步骤通过上面的命令返回,以确保您没有错过任何一个步骤!

步骤10:结果

我发现Google Assistant的语音识别功能

当与SIP电话和Asterisk PBX一起使用时,p》

非常好。无论是在听筒还是免提电话上,识别度都非常好。 Raspberry Pi Zero可以处理Asterisk音频处理,但运行SDK的速度较慢。当然,没有使用Home控件或Wake Word功能,Google Assistant可以处理的各种问题/答案等同于Google Home™。

责任编辑:wv

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 树莓派
    +关注

    关注

    116

    文章

    1697

    浏览量

    105506
  • 语音助手
    +关注

    关注

    7

    文章

    235

    浏览量

    26791
收藏 人收藏

    评论

    相关推荐

    如何在树莓派上安装Docker容器

    1. 准备工作 在开始之前,请确保你的树莓派已经安装了最新版本的Raspberry Pi OS。如果没有,请按照以下步骤操作: 下载最新的Raspberry Pi OS镜像:访问 Raspberry
    的头像 发表于 11-11 11:38 253次阅读

    树莓派gui开发用什么ide

    树莓派(Raspberry Pi)是一款功能强大的微型计算机,可以运行多种操作系统,如Raspbian、Ubuntu等。在树莓派上进行GUI(图形用户界面)开发,可以使用多种集成开发环
    的头像 发表于 08-30 16:49 654次阅读

    三星Bixby语音助手即将进军家电产品,实现自然语言交互

     三星宣布,Bixby语音助手即将全面进驻BESPOKE AI系列家电,用户可通过自然语言对家电进行语音控制。Bixby作为三星智能手机、手表、平板及电视的核心功能,如今将拓展至更多家
    的头像 发表于 08-26 17:20 699次阅读

    OpenAI向部分用户推出ChatGPT语音助手

    据智通财经APP报道,OpenAI正在为其部分尊贵的用户们精心呈现备受瞩目的ChatGPT语音助手,尽管此款助手原定于今年6月底的发布因为可能存在的安全隐患问题而被暂时搁置。
    的头像 发表于 07-31 15:41 438次阅读

    亚马逊在语音助手的竞赛中上远远落后

    在AI浪潮席卷全球之际,科技巨头们无不争先恐后,力图抢占先机。然而,在语音助手的竞赛中,曾经的领先者亚马逊可能即将获得最后一名。 继苹果在其WWDC 2024大会上发布了一款新的“Apple
    的头像 发表于 06-18 16:54 1282次阅读

    PBX的相关介绍

    PBX是什么东西? 云PBX是一种商务电话系统,通过互联网托管和供电,而不是本地局域网搭建。云PBX是一种云通讯解决方案,与传统PBX不同
    的头像 发表于 04-24 15:47 302次阅读

    PBX的介绍

    PBX是什么? 云PBX,也被称为基于云的专用交换机,是一个植根于互联网的虚拟PBX系统。它的主要特点是通过互联网进行托管和供电,而不是在本地局域网上搭建。云
    的头像 发表于 03-26 16:20 435次阅读
    云<b class='flag-5'>PBX</b>的介绍

    Google Gemma优化后可在NVIDIA GPU上运行

    2024 年 2 月 21 日,NVIDIA 携手 Google 在所有 NVIDIA AI 平台上发布面向 Gemma 的优化功能,Gemma 是 Google 最先进的新型轻量级 2B 和 7B 开放语言模型,可在任何地方运行
    的头像 发表于 02-25 11:01 435次阅读

    佰维存储microSD卡通过树莓派AVL认证

    设备,存储卡性能和兼容性直接影响树莓派的整体性能。 佰维存储TF200系列microSD卡通过树莓派(Raspberry Pi 4B)AVL认证,兼容适配树莓派微型计算机。 TF20
    的头像 发表于 01-23 17:19 395次阅读
    佰维存储microSD卡<b class='flag-5'>通过</b><b class='flag-5'>树莓</b>派AVL认证

    智能语音助手在医疗行业的应用与挑战

    介绍语音数据集在医疗智能语音助手中的应用、面临的挑战以及未来的发展趋势。 二、语音数据集在医疗智能语音
    的头像 发表于 01-19 17:37 615次阅读

    智能语音助手在旅游行业的应用与挑战

    详细介绍语音数据集在旅游智能语音助手中的应用、面临的挑战以及未来的发展趋势。 二、语音数据集在旅游智能语音
    的头像 发表于 01-19 17:30 731次阅读

    智能语音助手在教育行业的应用与挑战

    介绍语音数据集在教育智能语音助手中的应用、面临的挑战以及未来的发展趋势。 二、语音数据集在教育智能语音
    的头像 发表于 01-19 17:21 769次阅读

    智能语音助手在医疗行业的应用与挑战

    介绍语音数据集在医疗智能语音助手中的应用、面临的挑战以及未来的发展趋势。 二、语音数据集在医疗智能语音
    的头像 发表于 01-18 16:41 492次阅读

    语音数据集在智能语音助手中的应用与挑战

    。本文将详细介绍语音数据集在智能语音助手中的应用、面临的挑战以及未来的发展趋势。 二、语音数据集在智能语音
    的头像 发表于 01-18 15:46 359次阅读

    语音数据集在智能语音助手中的应用与挑战

    语音合成模型。本文将详细介绍语音数据集在智能语音助手中的应用、面临的挑战以及未来的发展趋势。 二、语音数据集在智能
    的头像 发表于 12-14 15:07 724次阅读