用于将文本转换为语音的命令行实用程序。

blogger的Python项目详细描述


博客

blogger是最初为将文章、文本或html转换为语音而创建的命令行实用程序。这对于那些喜欢为用户提供音频选项的博客来说尤其有用。

这是两个不同的文本到语音工具的包装器,旨在成为bloggercli的任何用户的简单界面。

blogger是buster technologies的一个开源项目,buster technologies是Buster ERP的创建者。我们公司在Simpler Software Blog上发布了技术和业务内容,需要一个简单的工具将文章转换为音频文件。

安装

该软件包可以通过pypi获得,可以使用pippipenv安装:

$ pip install -U blogger

最简单的例子

bloggercli具有将文本转换为语音的默认选项,只需很少的输入。下面是一个接收文本字符串并输出音频文件的示例:

$ blogger audio "This is an awesome article" -o article.mp3

默认的basic文本到语音转换器完成了这项工作,但不是世界上最好的自动语音。谷歌已经构建了一个更先进的文本到语音的云api,听起来更接近真实的语音。为此,可以使用gtts转换器并传入API token from Google which can be generated in the api console

$ blogger audio \
  --converter=gtts \
  --token="$MYAPIKEY"\"This is another awesome article"\
  -o article.mp3

选项

但是,在默认配置之外,您可以根据需要提供一些不同的输入。

$ blogger

Usage: blogger [OPTIONS] COMMAND [ARGS]...

  Blogger CLI

Options:
  --help  Show this message and exit.

Commands:
  audio       Generates an audio file from text, files, or urls.
  converters  Details for text to speech converters.
  providers   Details for content providers.
  voices      Details for voice options.
$ blogger audio --help

Usage: blogger audio [OPTIONS][INLINE_TEXT]

  Generates an audio file from text, files, or urls.

  All input is assumed to be in either plain text or HTML format. Any other
  formats could have potential issues during processing.

Options:
  --text TEXT                     The text to convert to speech.
  --file TEXT                     The file path to the file containing text to
                                  convert to speech.
  --url TEXT                      Parse an article from a URL.
  -p, --provider TEXT             When parsing from a URL, the provider
                                  defines the content provider (Ex. Medium,
                                  Ghost, etc.)
  --url-title-selector TEXT       For the manual provider, this specifies the
                                  tag and class or id in the DOM that contains
                                  the title.
  --url-content-selector TEXT     For the manual provider, this specifies the
                                  tag and class or id in the DOM that contains
                                  the content.
  -t, --token TEXT                Google API token used for the gtts provider.
  -vi, --voice TEXT               The voice option.
  -vp, --pitch TEXT               The pitch of the voice on a scale of -20.0
                                  to 20.0.
  -vr, --rate TEXT                The rate of speech on a scale of 0.0 to 4.0.
  -c, --converter TEXT            The type of text to speech converter to use.
                                  Defaults to basic.
  -o, --output TEXT               The output path for the audio file. If not
                                  specified, output will go to STDOUT.
  --full-preview / --short-preview
                                  Preview the entire article before
                                  converting.
  -v, --verbose / --no-verbose    Provides more debugging information.
  -y, --yes / --no                Assumes yes to prompts.
  --help                          Show this message and exit.

转换器

有两种类型的文本到音频转换器内置在blogger中。

$ blogger converters -l

basic A simple text to speech converter. (default)
gtts The Google cloud-based text to speech converter API.

基本

默认情况下使用的basic转换器使用一个简单的google翻译实用程序将文本转换为语音。正如它所说,这是一个非常基本的选择,并输出一个像样的音频文件。

gtts(谷歌文本语音转换)

google提供的cloud text to speech API比他们以前的文本到语音软件工作得更好。您必须有一个API token才能使用此转换器。

$ blogger audio \
  --converter=gtts \
  --token="$MYAPIKEY"\
  --file=/tmp/input.txt \
  -o article.mp3

如果使用gtts转换器,它还带有一些命令行选项。唯一需要的选项是api令牌:

-t, --token TEXT                Google API token used for the gtts provider.
-vi, --voice TEXT               The voice option.
-vp, --pitch TEXT               The pitch of the voice on a scale of -20.0
                                to 20.0.
-vr, --rate TEXT                The rate of speech on a scale of 0.0 to 4.0.

阅读how to generate your API token here上的说明。

输入

文本可以通过多种方式传递到blogger。一次只能在一个命令中使用以下方法中的一个。冲突将导致使用单个输入方法,而忽略其他输入。

内联

如上面的简单示例所示,您可以将文本直接传递到cli:

$ blogger audio "Convert this text please" -o article.mp3

$ blogger audio --text="Convert this text please" -o article.mp3

$ blogger audio --text="Convert this text please" --output=/my_audio/article.mp3

文件

另一个选项是读取文件:

$ blogger audio --file=./article.txt -o article.mp3

网址

最后,你可以阅读网上发布的文章,删除相关内容,并生成一个音频文件。这是理想的文章已经编写和出版,需要转换后。

当读取一个url时,blogger需要一些帮助来确定要查看的内容。为此,我们使用提供者。提供程序表示内容提供程序(如medium、ghost、wordpress等),请参阅Providers部分,了解有关自动支持哪些博客格式的详细信息。

$ blogger audio \
  --url=https://bustererp.com/blog/whats-in-python-3-8 \
  --provider=ghost \
  -o article.mp3
$ blogger audio \
  --url=https://medium.com/@reedrehg/10-ways-to-prevent-technical-debt-33dd17075fba \
  --provider=medium \
  -o article.mp3

如果一个相关的提供者不存在,那么你可以通过选择器来告诉我们到底要找什么。通常blogger总是先查找标题,然后查找内容体。

$ blogger audio \
    --url=https://myblog.com/myarticle \
    --url-title-selector="h1.blog-title"\
    --url-content-selector="div#blog-content"\
    -o article.mp3

文章预览

每个audio命令都将向您显示所处理内容的预览,以确保您提取的信息正确无误。使用--full-preview标志预览整个内容,而不仅仅是部分内容。

$ blogger audio --url=https://myblog.com/myarticle --provider=ghost -o article.mp3

Converting audio using the gtts converter:
  Text Preview:
    Lorem ipsum dolor sit amet, consectetur adipiscing elit. Praesent
    turpis ante, egestas id diam sed, convallis ultrices erat.
    Praesent ut nibh non quam pellentesque finibus. Maecenas convallis,
    metus a sollicitudin porttitor, dolor leo facilisis erat,
    sed condimentum nisl quam in nunc. Quisque sed mattis ligula,
    sed finibus nunc. Proin et nisl ut leo tempor dignissim in sed
    mauris. Duis porta lacinia sapien sit amet consequat. Quisque
    eget lectus non lorem vehicula porta eu a lacus. Etiam fermentum,
    purus at malesuada tristique, lorem elit hendrerit libero,
    a molestie felis felis a nibh. Quisqu...

Processing...
Successfully outputted to /tmp/audio.mp3

提供者

检查提供程序列表以查看系统支持的当前可用博客提供程序。只有与--url选项组合时,--provider标志才相关。

$ blogger providers -l

manual Uses user provided input to determine how to parse content (default)
ghost Handles parsing content for Ghost hosted blogs (https://ghost.io)
medium Handles parsing content written on Medium (https://medium.com)

声音

检查语音列表以查看当前可用的语音。这只与gtts转换器兼容:

$ blogger voices -l

US-A United States english accent option A
US-B United States english accent option B
US-C United States english accent option C
US-D United States english accent option D
US-E United States english accent option E
US-F United States english accent option F
AU-A Australian english accent option A
AU-B Australian english accent option B
AU-C Australian english accent option C
AU-D Australian english accent option D
GB-A British english accent option A
GB-B British english accent option B
GB-C British english accent option C
GB-D British english accent option D
IN-A Indian english accent option A
IN-B Indian english accent option Bextremely
IN-C Indian english accent option C
$ blogger audio \
  --converter=gtts \
  --token="$MYAPIKEY"\
  --file=/tmp/input.txt \
  --voice="US-C"\
  --yes

参与blogger

blogger是开源软件可根据MIT license条款自由分配。源代码托管在GitHub

请在GitHub issue tracker中以请求拉取、错误报告或一般性评论的形式进行贡献。

blogger最初由Holden Rehg创建,开发由Buster Technologies赞助。


巴斯特技术有限责任公司

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
用于读取OBS写入的java打开文件   java使用XFire通过ssl使用Web服务   java如何查看幸存者空间中的对象   不使用ActionListener从按钮执行java代码   java仅当用户执行某个操作时,如何清除应用程序的历史记录?   json无法反序列化'java'的实例。lang.Long`out-of-START\u对象标记;在弹簧靴柱上   JavaPOJO到OpenApi定义   java时间戳格式不显示不同的值   java Android:如何从片段切换到主要活动?   用于步进计数器/健身应用程序的java循环进度条   java Log4j更改特定记录器实例的记录器级别   JAVA中实现连接的数据结构   java Mockito静态函数mock   未找到java辅助技术:org。侏儒。可访问性。阿特克拉珀   java仅当列表中没有类似项时才向ArrayList添加项   java如何使用docx4j在word中添加合并字段?