依赖于谷歌云的服务,将会议语音传给谷歌的 Google Cloud speech-to-text API,然后得到识别的文字,而且如果你说话停顿很小,可以自动修正上下文中的识别错误。文字会自动在屏幕上弹出来,同时在文字聊天窗口当中,每句话都会按时间自动增加文字段。

很强大的功能,谷歌基本上能识别所有国家语音,甚至一些方言,还有美式英语和英式英语等。我在YouTube上面看到印度三哥的演示,实时印度语的字幕。按照官方的说法,实时翻译成什么语言文字,取决于你的浏览器的locale设定。但是我折腾很久,也只有英文的,不知道是哪里的问题,github上面提问过,可惜官方直接忽视我的问题了。

因为我的谷歌云支付账号到期了,以前是申请了一年的赠送账户来测试的。目前只能根据之前记录的笔记来整理步骤。

一切以官网为标准:  https://github.com/jitsi/jigasi

1,上文中说了Jigasi的安装,修改Jigasi的配置sip-communicator.propertie

org.jitsi.jigasi.ENABLE_TRANSCRIPTION=true   (容许实时翻译)

org.jitsi.jigasi.ENABLE_SIP=true   (容许打电话)

2,在ubuntu下面安装谷歌SDK

前提条件:你有谷歌云账号,你建了项目,你为你的项目绑定支付账户,你的项目开启了语音识别服务(我之前另外一篇文章,Freeswitch+unimrcp,也是用的这个服务)

export CLOUD_SDK_REPO="cloud-sdk-$(lsb_release -c -s)"
echo "deb http://packages.cloud.google.com/apt $CLOUD_SDK_REPO main" | sudo tee -a /etc/apt/sources.list.d/google-cloud-sdk.list
curl https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key add -
sudo apt-get update && sudo apt-get install google-cloud-sdk google-cloud-sdk-app-engine-java
gcloud init
gcloud auth application-default login

(下面安装过程删除了一些敏感数据)

root@test01:/etc/jitsi# gcloud init
Welcome! This command will take you through the configuration of gcloud.Your current configuration has been set to: [default]You can skip diagnostics next time by using the following flag:gcloud init --skip-diagnosticsNetwork diagnostic detects and fixes local network connection issues.
Checking network connection...done.
Reachability Check passed.
Network diagnostic passed (1/1 checks passed).You must log in to continue. Would you like to log in (Y/n)?  yGo to the following link in your browser:https://accounts.google.com/o/oauth2/auth?redirect_urig???????????????????%3Aoaapis.com%2Fauth%2Fappengine.admin+https%3A%2Fte+https%3A%2F%2Fwww.googleapis.com%2Fauth%2Faccounts.reauth&access_type=offlineEnter verification code: 4/IAHgRqkCLxQkadfhskajdfhskajdfhksad44owqAZaMFwy9HszKxgzaEEQ
You are logged in as: [michael01????o@gmail.com].Pick cloud project to use: [1] e-centaur-232307[2] vibrant-chain-234506[3] Create a new project
Please enter numeric choice or text value (must exactly match list
item):  2Your current project has been set to: [vibrant-chain-234506].Not setting default zone/region (this feature makes it easier to use
[gcloud compute] by setting an appropriate default value for the
--zone and --region flag).
See https://cloud.google.com/compute/docs/gcloud-compute section on how to set
default compute region and zone manually. If you would like [gcloud init] to be
able to do this for you the next time you run it, make sure the
Compute Engine API is enabled for your project on the
https://console.developers.google.com/apis page.Created a default .boto configuration file at [/root/.boto]. See this file and
[https://cloud.google.com/storage/docs/gsutil/commands/config] for more
information about configuring Google Cloud Storage.
Your Google Cloud SDK is configured and ready to use!* Commands that require authentication will use michael01chaochao@gmail.com by default
* Commands will reference project `vibrant-chain-234506` by default
Run `gcloud help config` to learn how to change individual settingsThis gcloud configuration is called [default]. You can create additional configurations if you work with multiple accounts and/or projects.
Run `gcloud topic configurations` to learn more.Some things to try next:* Run `gcloud --help` to see the Cloud Platform services you can interact with. And run `gcloud help COMMAND` to get help on any gcloud command.
* Run `gcloud topic --help` to learn about advanced features of the SDK like arg files and output formatting
root@DN2NVC01:/etc/jitsi# gcloud auth application-default login
Go to the following link in your browser:https://accounts.google.com/o/oauth2/auth?redirect_uri=urn%3Agoogleapis.com%2Fauth%2Fcloud-platform&access_type=offlineEnter verification code: 4/IAFUIdzs5_2w8_tasdfasdfsadfasdOIzTIcFz0Zvi98ezMBoCredentials saved to file: [/root/.config/gcloud/application_default_credentials.json]These credentials will be used by any library that requests
Application Default Credentials.To generate an access token for other uses, run:gcloud auth application-default print-access-token
root@test01:/etc/jitsi# 

3,注意上面,我们最后实际拿到了一个json的密匙文件,保存在

Credentials saved to file: [/root/.config/gcloud/application_default_credentials.json]

在Jigasi配置文件中   /etc/jitsi/jigasi/config  增加

GOOGLE_APPLICATION_CREDENTIALS=/root/.config/gcloud/application_default_credentials.json

然后Jigasi就可以通过密匙链接谷歌云服务了。

===================================================================================

第2,3步当中我的秘钥只用了半年就失效了,找了很多原因,应该是谷歌云加强了认证,就是在你的秘钥当中必须包含私钥,也就是说你必须在谷歌云上自己手动去生成一个秘钥,具体步骤看这里

https://cloud.google.com/dialogflow/docs/quick/setup#authentication-and-access-control

之前ubuntu本地生成的秘钥文件不能用(结构类似下面)

vim /root/.config/gcloud/application_default_credentials.json
{
“client_id”: “764086051850-6qr4pXXXXXpt8ejuXXXX1hur.apps.googleusercontent.com”,
“client_secret”: “d-FL95Q1XXXXXXXXpd7hHD0Ty”,
“refresh_token”: “1/H8cj_vxNXXXXXXXXXRe8K6xCACJKpcb5pGna2c”,
“type”: “authorized_user”
}

所以从谷歌云拿到的秘钥请直接替换原来的秘钥文件就可以了。

=========================================================================================

4,检查  /etc/jitsi/meet/domain-config.js 容许启用实时翻译

transcribingEnabled: true,

检查  /usr/share/jitsi-meet/interface_config.js

DISABLE_TRANSCRIPTION_SUBTITLES: false,

修改/etc/jitsi/jigasi/sip-communicator.properties:

# send formats  (实时字幕是json,聊天框显示是txt)
org.jitsi.jigasi.transcription.SEND_JSON=true
org.jitsi.jigasi.transcription.SEND_TXT=true
# delivering final transcript (语音识别的文字保存位置,并且可以用网页来打开全部字幕内容)
org.jitsi.jigasi.transcription.DIRECTORY=/etc/jitsi/jigasi/transcripts
org.jitsi.jigasi.transcription.BASE_URL=https://domain.com.cn/transcripts
org.jitsi.jigasi.transcription.jetty.port=-1
org.jitsi.jigasi.transcription.ADVERTISE_URL=true

5,重启下服务器,再进入会议应该可以看到左下角看到一个CC的图标。

点击CC按钮,自动会有一个名字叫“transcribe”的用户加入会议,然后你说话,屏幕上就有字幕了,聊天窗口也会出现文字内容了。

如果你点了CC按钮没反应,大概哪儿没有配置好,点击右下角的"+"符号,有个邀请人窗口,输入“jitsi_meet_transcribe”,确定。然后transcribe就进来了,有时候翻译官进来了,会自动掉线退出,你重新再邀请一次就好了。

当然可以试下另外一种命令的方式启动实施翻译。

因为你用的chrome,然后打开chrome的调试窗口,在调试窗口输入 APP.conference._room.dial("jitsi_meet_transcribe"),这个的效果和上面点+的效果是一样的。

基本上这个功能就是这样配置了,相比其他很多会议系统,这个功能有点“厉害”,应该还是说谷歌厉害。

附带语种列表

Afrikaans (Suid-Afrika)    af-ZA    南非荷兰语(南非)
አማርኛ (ኢትዮጵያ)    am-ET    阿姆哈拉语(埃塞俄比亚)
Հայ (Հայաստան)    hy-AM    亚美尼亚语(亚美尼亚)
Azərbaycan (Azərbaycan)    az-AZ    阿塞拜疆语(阿塞拜疆)
Bahasa Indonesia (Indonesia)    id-ID    印度尼西亚语(印度尼西亚)
Bahasa Melayu (Malaysia)    ms-MY    马来语(马来西亚)
বাংলা (বাংলাদেশ)    bn-BD    孟加拉语(孟加拉)
বাংলা (ভারত)    bn-IN    孟加拉语(印度)
Català (Espanya)    ca-ES    加泰罗尼亚语(西班牙)
Čeština (Česká republika)    cs-CZ    捷克语(捷克共和国)
Dansk (Danmark)    da-DK    丹麦语(丹麦)
Deutsch (Deutschland)    de-DE    德语(德国)
English (Australia)    en-AU    英语(澳大利亚)
English (Canada)    en-CA    英语(加拿大)
English (Ghana)    en-GH    英语(加纳)
English (Great Britain)    en-GB    英语(英国)
English (India)    en-IN    英语(印度)
English (Ireland)    en-IE    英语(爱尔兰)
English (Kenya)    en-KE    英语(肯尼亚)
English (New Zealand)    en-NZ    英语(新西兰)
English (Nigeria)    en-NG    英语(尼日利亚)
English (Philippines)    en-PH    英语(菲律宾)
English (Singapore)    en-SG    英语(新加坡)
English (South Africa)    en-ZA    英语(南非)
English (Tanzania)    en-TZ    英语(坦桑尼亚)
English (United States)    en-US    英语(美国)
Español (Argentina)    es-AR    西班牙语(阿根廷)
Español (Bolivia)    es-BO    西班牙语(玻利维亚)
Español (Chile)    es-CL    西班牙语(智利)
Español (Colombia)    es-CO    西班牙语(哥伦比亚)
Español (Costa Rica)    es-CR    西班牙语(哥斯达黎加)
Español (Ecuador)    es-EC    西班牙语(厄瓜多尔)
Español (El Salvador)    es-SV    西班牙语(萨尔瓦多)
Español (España)    es-ES    西班牙语(西班牙)
Español (Estados Unidos)    es-US    西班牙语(美国)
Español (Guatemala)    es-GT    西班牙语(危地马拉)
Español (Honduras)    es-HN    西班牙语(洪都拉斯)
Español (México)    es-MX    西班牙语(墨西哥)
Español (Nicaragua)    es-NI    西班牙语(尼加拉瓜)
Español (Panamá)    es-PA    西班牙语(巴拿马)
Español (Paraguay)    es-PY    西班牙语(巴拉圭)
Español (Perú)    es-PE    西班牙语(秘鲁)
Español (Puerto Rico)    es-PR    西班牙语(波多黎各)
Español (República Dominicana)    es-DO    西班牙语(多米尼加共和国)
Español (Uruguay)    es-UY    西班牙语(乌拉圭)
Español (Venezuela)    es-VE    西班牙语(委内瑞拉)
Euskara (Espainia)    eu-ES    巴斯克语(西班牙)
Filipino (Pilipinas)    fil-PH    菲律宾语(菲律宾)
Français (Canada)    fr-CA    法语(加拿大)
Français (France)    fr-FR    法语(法国)
Galego (España)    gl-ES    加利西亚语(西班牙)
ქართული (საქართველო)    ka-GE    格鲁吉亚语(格鲁吉亚)
ગુજરાતી (ભારત)    gu-IN    古吉拉特语(印度)
Hrvatski (Hrvatska)    hr-HR    克罗地亚语(克罗地亚)
IsiZulu (Ningizimu Afrika)    zu-ZA    祖鲁语(南非)
Íslenska (Ísland)    is-IS    冰岛语(冰岛)
Italiano (Italia)    it-IT    意大利语(意大利)
Jawa (Indonesia)    jv-ID    爪哇语(印度尼西亚)
ಕನ್ನಡ (ಭಾರತ)    kn-IN    卡纳达语(印度)
ភាសាខ្មែរ (កម្ពុជា)    km-KH    高棉语(柬埔寨)
ລາວ (ລາວ)    lo-LA    老挝语(老挝)
Latviešu (latviešu)    lv-LV    拉脱维亚语(拉脱维亚)
Lietuvių (Lietuva)    lt-LT    立陶宛语(立陶宛)
Magyar (Magyarország)    hu-HU    匈牙利语(匈牙利)
മലയാളം (ഇന്ത്യ)    ml-IN    马拉雅拉姆语(印度)
मराठी (भारत)    mr-IN    马拉地语(印度)
Nederlands (Nederland)    nl-NL    荷兰语(荷兰)
नेपाली (नेपाल)    ne-NP    尼泊尔语(尼泊尔)
Norsk bokmål (Norge)    nb-NO    博克马尔挪威语(挪威)
Polski (Polska)    pl-PL    波兰语(波兰)
Português (Brasil)    pt-BR    葡萄牙语(巴西)
Português (Portugal)    pt-PT    葡萄牙语(葡萄牙)
Română (România)    ro-RO    罗马尼亚语(罗马尼亚)
සිංහල (ශ්රී ලංකාව)    si-LK    僧伽罗语(斯里兰卡)
Slovenčina (Slovensko)    sk-SK    斯洛伐克语(斯洛伐克)
Slovenščina (Slovenija)    sl-SI    斯洛文尼亚语(斯洛文尼亚)
Urang (Indonesia)    su-ID    巽他语(印度尼西亚)
Swahili (Tanzania)    sw-TZ    斯瓦希里语(坦桑尼亚)
Swahili (Kenya)    sw-KE    斯瓦希里语(肯尼亚)
Suomi (Suomi)    fi-FI    芬兰语(芬兰)
Svenska (Sverige)    sv-SE    瑞典语(瑞典)
தமிழ் (இந்தியா)    ta-IN    泰米尔语(印度)
தமிழ் (சிங்கப்பூர்)    ta-SG    泰米尔语(新加坡)
தமிழ் (இலங்கை)    ta-LK    泰米尔语(斯里兰卡)
தமிழ் (மலேசியா)    ta-MY    泰米尔语(马来西亚)
తెలుగు (భారతదేశం)    te-IN    泰卢固语(印度)
Tiếng Việt (Việt Nam)    vi-VN    越南语(越南)
Türkçe (Türkiye)    tr-TR    土耳其语(土耳其
اردو (پاکستان)    ur-PK    乌尔都语(巴基斯坦)
اردو (بھارت)    ur-IN    乌尔都语(印度)
Ελληνικά (Ελλάδα)    el-GR    希腊语(希腊)
Български (България)    bg-BG    保加利亚语(保加利亚)
Русский (Россия)    ru-RU    俄语(俄罗斯)
Српски (Србија)    sr-RS    塞尔维亚语(塞尔维亚)
Українська (Україна)    uk-UA    乌克兰语(乌克兰)
עברית (ישראל)    he-IL    希伯来语(以色列)
العربية (إسرائيل)    ar-IL    阿拉伯语(以色列)
العربية (الأردن)    ar-JO    阿拉伯语(约旦)
العربية (الإمارات)    ar-AE    阿拉伯语(阿拉伯联合酋长国)
العربية (البحرين)    ar-BH    阿拉伯语(巴林)
العربية (الجزائر)    ar-DZ    阿拉伯语(阿尔及利亚)
العربية (السعودية)    ar-SA    阿拉伯语(沙特阿拉伯)
العربية (العراق)    ar-IQ    阿拉伯语(伊拉克)
العربية (الكويت)    ar-KW    阿拉伯语(科威特)
العربية (المغرب)    ar-MA    阿拉伯语(摩洛哥)
العربية (تونس)    ar-TN    阿拉伯语(突尼斯)
العربية (عُمان)    ar-OM    阿拉伯语(阿曼)
العربية (فلسطين)    ar-PS    阿拉伯语(巴勒斯坦国)
العربية (قطر)    ar-QA    阿拉伯语(卡塔尔)
العربية (لبنان)    ar-LB    阿拉伯语(黎巴嫩)
العربية (مصر)    ar-EG    阿拉伯语(埃及)
فارسی (ایران)    fa-IR    波斯语(伊朗)
हिन्दी (भारत)    hi-IN    印地语(印度)
ไทย (ประเทศไทย)    th-TH    泰语(泰国)
한국어 (대한민국)    ko-KR    韩语(韩国)
國語 (台灣)    zh-TW    中文、普通话(台湾繁体)
廣東話 (香港)    yue-Hant-HK    中文、粤语(香港繁体)
日本語(日本)    ja-JP    日语(日本)
普通話 (香港)    zh-HK    中文、普通话(香港简体)
普通话 (中国大陆)    zh    中文、普通话(中国简体)

Jitsi视频会议部署(四):视频会议中实时语音转字幕相关推荐

  1. 三网融合情况下,实时语音通信技术的研究

    随着技术和标准的不断成熟,伴随着"三网合一"的大潮,VoIP可望成为下一代电信基础设施结构的杨心,使未来各电信业务综合统一在IP网络上成为可能,导致数据的融合和未来电信市场的重组, ...

  2. 三网融合情况下,实时语音通信技术解决之道

    随着技术和标准的不断成熟,伴随着"三网合一"的大潮,VoIP可望成为下一代电信基础设施结构的杨心,使未来各电信业务综合统一在IP网络上成为可能,导致数据的融合和未来电信市场的重组, ...

  3. Jitsi视频会议部署(一):总结

    疫情期间,各种视频会议的使用量暴增.原本公司以前已经部署了Jitsi视频会议,但是因为Jitsi视频会议在wifi环境下的体验很差,当然这个也许是公司的wifi问题,毕竟在有线网络下面是没有问题的.后 ...

  4. 在视频会议或者在线课程中如何消除由于音箱输出的声音传递到麦克风而产生的回音,以降低听声辩音的压力,从而提高听课或者开会的专注度。

    在视频会议或者在线课程中如何消除由于音箱输出的声音传递到麦克风而产生的回音,以降低听声辩音的压力,从而提高听课或者开会的专注度. 关于回声问题的描述,以及产生的影响 最近由于疫情影响,不方便前往学校教 ...

  5. 史上最快的内网视频会议部署方案-turbomeeting视频会议系统

    之前的文章有提到过,市面上用电脑安装视频会议软件.手机安装视频会议软件来开会的"软视频会议系统"主要是以租赁的形式提供给用户使用,很多优秀的软件甚至只需要付费6000K就可以获得5 ...

  6. Openmeetings—视频会议部署文档

    Openmeetings-视频会议部署文档 Linux丶晨星关注 0.3182019.11.15 19:48:49字数 1,714阅读 4,463 一.openmeeting简介 OpenMeetin ...

  7. 基于Docker离线部署开源视频会议系统Jitsi-Meet

    基于Docker离线部署开源视频会议系统Jitsi-Meet 若有问题,欢迎交流! chungkou20@126.com

  8. 音视频进阶教程|如何实现游戏中的实时语音

    1 游戏实时语音功能简介 1.1 游戏实时语音概念解释 范围:收听者接收音频的范围. 方位:指收听者在游戏世界坐标中的位置和朝向,详情可参考 5.5 初始化设置 中的"步骤 1". ...

  9. ChatGPT让3D猫娘有了灵魂!可实时语音互动,还能在虚拟场景中给你做饭玩猜谜...

    萧箫 发自 凹非寺 量子位 | 公众号 QbitAI 将ChatGPT打造成猫娘风格的对话AI,已经是老司机的基操了. 但有没有想过,这只猫娘还能进一步从对话框里"跳"出来,能动. ...

最新文章

  1. spring boot 1.5.4 之监控Actuator(十四)
  2. 第十六周程序阅读(7)
  3. 直播 | ICML 2021论文解读:对神经网络中层特征复杂度的解释与拆分
  4. .vb.net 执行js方法_Deno的执行机制
  5. python读取和存入json文件
  6. 超硬核!我统计了BAT笔试面试出现频率最高的五道题,学会了总能碰到一道
  7. 【秒懂设计模式】单例设计模式
  8. 实现CStack类遇到的问题
  9. CentOS查看系统连接状态
  10. docker中更新镜像——基于Prometheus
  11. php大文件上传失败的原因及解决方法
  12. c语言归并排序数组不固定,归并排序非递归实现C语言
  13. 每日算法系列【LeetCode 312】戳气球
  14. Android Java类编写规范+优化建议
  15. 01-ArcGIS从下载到卸载那些事儿
  16. 手机无线如何共享给台式计算机,台式电脑怎样共享网络给手机
  17. windows下自动切换并连接wifi热点
  18. 服务器搭建邮件自动回复,爆笑的邮件自动回复内容,邮件自动回复心理
  19. css背景颜色和图片
  20. 2015,了不起的邮件创意!

热门文章

  1. nrm : 无法加载文件 C:\Users\HUAWEI\AppData\Roaming\npm\nrm.ps1,因为在此系统上禁止运行脚本
  2. 虚拟机软件压缩包免费分享
  3. matlab 生成 word 表格,利用MATLAB生成Word文档.doc
  4. 爱尔兰圣三一大学计算机硕士课程,都柏林圣三一学院硕士
  5. perl json encode_json decode_json
  6. 昆仑通态触摸屏与2台台达变频器及2台仪表通讯控制
  7. C/C++编程笔记:C语言打造中国象棋游戏,项目源代码分享!
  8. css html弄出哆啦a梦,用css画一个哆啦A梦
  9. #define中宏定义中的空格
  10. 超简单制作Win7安装U盘