Git Product home page Git Product logo

spokenai's Introduction

SpokenAi

English | 简体中文

英语口语练习AI助手

Go OpenAI portaudio tensorflowtts docker license

一.前言

最近几个月大火大热的ChatGPT已经发布到ChatGPT4版本了,我也一直在关注ChatGPT的发展,一直在思考能基于ChatGPT或着说openai的能力能做出点什么应用,解决一些问题。

💥在仔细看过openai的API文档后,发现openai不止提供了Chat的能力,还提供了如语音转文字,图片生成等能力。虽然没有ChatGPT那么火,但经过一番试用后,发现和ChatGPT效果一样让人惊艳。索性就直接来一个openai全家桶,通过openai的能力开发一款应用试试。

开发什么呢? 🤔

ChatGPT对英语的语言能力自然不必说,而我们国人当下英语学习面临的一大问题就是哑巴英语,市面上的提供的英语对话机器人和ChatGPT比起来差得不是一星半点。只能请老师一对一真人教学? 🤨  拜托,现在都2023年了,还需要花钱请口语老师么?

来造一款Ai口语练习应用解决这个问题 💯

二.支持功能

目前是一个简单版本的英语口语练习功能,支持如下功能

  1. 读取语音输入
  2. 语音转文字
  3. 通过ChatGPT沟通交流
  4. 文字转音频
  5. 音频播放

ToDoList:

  • 寻找志同道合的小伙伴,有意向一起制作一款Ai应用的请联系我!!!
  • 修复Bug,已知:mac播放音频存在兼容性问题、Tensorflowtts不支持长语句(>2048字节)合成语音
  • 编码后端服务

三.系统架构

  • portaudio: PortAudio是一个跨平台的音频I/O库,提供了简单的API,使得开发人员可以在不同的平台上以相似的方式访问音频硬件。它支持Windows、Mac OS X、Linux和其他主要的操作系统。PortAudio支持多种音频API,包括ASIO、Core Audio、DirectSound、MME / WDM、ALSA和OSS。PortAudio还包括一个流接口,允许开发人员以相同的方式使用不同的音频API和硬件。

  • openai-api: 提供了多种API服务,包括但不限于自然语言处理、语音转文字、文字转语音、图像生成等。在OpenAI的API文档中,用户可以申请API密钥,并使用API进行开发和测试。

  • tensorflowtts: TensorflowTTS 是一个基于 TensorFlow 的语音合成工具包,它包含了多种语音合成模型和前处理工具,并且支持多种语音合成任务,例如有人声合成(Vocoder)、语音转换、语音增强等。它可以帮助开发者快速搭建语音合成模型,定制自己的语音合成系统。

  • Docker: Docker是一种容器化技术,可以将应用程序及其依赖项打包在一个容器中,以便在任何地方运行。容器是一种轻量级的虚拟化技术,可以提供与传统虚拟机相似的隔离性和安全性,但占用的资源更少。Docker还提供了一套工具和平台,使得容器的构建、部署和管理变得更加容易。

  • SpokenAi:整体应用层,其中有三个库分别是praudio、rocket、ttsclient,对应如下作用

    1. praudio: 封装portaudio,对外提供音频录制和音频播放等接口
    2. rocket: 封装openai-api, 对外提供Chat接口、音频转文字等接口
    3. ttsclient: 提供调用容器化运行的tensorflowtts的接口
  • Console: 终端交互层,用户按提示进行操作,输入信息和进行相关操作

    Tips:tensorflowtts 依赖较多,为方便完整,这里采用Docker部署

四.流程设计

简单概括总体流程有三个步骤,一是输入个人信息 二是录音转文字,三是发送消息,进行对话交互

由于是通过终端访问,主要监听键盘事件,进行不同操作

如 按W键会开始录音,录音过程中按Q停止录音,待录音翻译完成后,按Ctrl+shift+enter发送消息

五.部署运行

编译运行

一.安装依赖 portaudio

1. Windows: [http://www.portaudio.com/download.html](http://www.portaudio.com/download.html)
2. MacOS: brew install portaudio
3. Linux: apt-get install portaudio19-dev

二. 编译代码

# 下载源码
git clone https://github.com/ptonlix/spokenai.git
cd spokenai

# 修改配置文件
edit fat_config.toml

# 编译
go build

# 查看命令
./spokenai -h

# 运行
./spokenai

三.运行TensorflowTTS

# 拉取作者已构建的镜像
docker pull ptonlix/tensorflowtts:1.0.9
# 运行镜像
docker run -itd -p 5000:5000 --name spokenai-tts ptonlix/tensorflowtts:1.0.9

配置文件说明

[openai]

  [openai.base]
    apikey = ""
    apihost = "https://api.openai.com/v1" 

  [openai.chat]
    chatmodel =  "gpt-3.5-turbo"
    chatmaxtoken = 2048
    chattemperature = 0.7
    chattopp = 1

  [openai.audio]
    audiomodel = "whisper-1"
  
[file]
  [file.history]
    path = "./data/history/"
  [file.audio]
    [file.audio.record]
      path = "./data/audio/record/"
    [file.audio.play]
      path = "./data/audio/play/"
      enable =  0
      ttshost = "http://127.0.0.1:5000"

采用toml配置文件格式, 主要分为两部分

  1. openai配置,主要需要填写自己的apikey和如果走代理则修改apihost地址。其他都是模型配置按需修改即可
  2. file配置,由于是终端版本,采用文件存储的形式较为方便
    • history为聊天上下文存储
    • audio为音频存储
      • record为录音文件存储目录
      • play为语言合成文件存储目录
      • enable 可以选为是否开启语音合成,默认不开启,开启需要运行tensorflowtts。
      • ttshost 为tts api服务地址

SPONSORED BY

spokenai's People

Contributors

ptonlix avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar

spokenai's Issues

failed go build

我在生成 go 构建时遇到错误:

./event/../hook/x11/input_c.h:38:10: fatal error: X11/Xlib-xcb.h: No such file or directory

接入H5

这个支持接入本地的 H5 吗,我想自己做一个

go build error

你好我在go build的时候遇到
go: downloading github.com/gordonklaus/portaudio v0.0.0-20221027163845-7c3b689db3cc
然后i/o time out
请问这是为什么?
vpn、终端代理实测没问题

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.