npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

aquestalk-mac

v0.1.0

Published

AquesTalk javascript library for Mac.

Downloads

10

Readme

aquestalk-mac

description

AquesTalk javascript library for Mac.

AquesTalkライブラリをJavaScriptから実行できるようにするMac環境用のライブラリです。
実行するにはMac環境用のAquesTalkのライブラリが必要となります。

install

npm install --save aquestalk-mac

Q & A

Q. npm moduleの他に何が必要か?

  • 必要な機能に対応するAquesTalkのライブラリと、その動作に必要なファイル群が必要。
  • 最小構成として、読み上げアプリを作ると仮定した場合、
    • AqKanji2Koe で"音声記号列"に変換する
    • AquesTal2、もしくは AquesTalk10 のどちらかで音声ファイルを作成する
      • ことになる。

Q. AquesTalkライブラリはどこから入手できるか?

  • 株式会社アクエストのサイトからダウンロードするか
  • 株式会社アクエストのオンラインストアでライセンス購入時についてくる

Q. AquesTalkのライセンスはどこから入手できるか?

  • 株式会社アクエストのオンラインストアで購入する。

Q. このライブラリは、AquesTalkの評価版でも動作するか?

  • 動作する。

Q. このライブラリを使ったアプリはあるか?

  • サンプルアプリ https://github.com/taku-o/aquestalk-player-mac
  • 移植元のコードを MYukkuriVoice というアプリで使用している。

Q. AquesTalk1のライブラリはサポートしていない?

  • まだサポートしていない。
  • しかし、サポートする前に、MacでAquesTalk1が動作しなくなる見込み。

Q. ファイルアクセスが必要?

  • Q. このライブラリを使用するにはファイルアクセスが必要?
    • A. 必要
  • Q. つまり、Webブラウザでは動作しない?
    • A. 基本的には動作しない
  • Q. 音声をJavaScriptで再生するには、Web Audio APIか、HTML5 Audioクラスあたりが妥当?
    • A. 他のプログラムに作成した音声データを渡さないなら妥当
  • Q. Web Audio APIは、Webブラウザで動作しますよね?
    • A. ・・・そうですね
  • Q. このライブラリはどういう場面で使えるの?
    • A. ・・・え、Electronとか・・・

Q. npm install時にビルドエラー発生

  • Pythonの環境がおかしいかも?

Q. Electronに組み込んだら動作しなかった

  • Module version mismatch. Expected 50, got 51.
    • この種のエラーメッセージが出ているなら、electron-rebuildでビルドし直す。
npm install --save-dev electron
npm install --save-dev electron-rebuild
./node_modules/.bin/electron-rebuild

Q. サンプルコードやテストで参照しているvendorには何が置いてある?

|-- vendor
    |-- AqKanji2Koe.framework
    |-- AqUsrDic.framework
    |-- AquesTalk10.framework
    |-- AquesTalk2.framework
    |-- aq_dic_large
    `-- phont

Sample Code

AqKanji2Koe

"日本語文字列"をAquesTalkで利用可能な"音声記号列"に変換します。

  • 開発、および利用には次のものが必要です。
    • AqKanji2Koeライブラリ
    • AquesTalkユーザー辞書ファイル (AqKanji2Koeライブラリに同梱)
    • AqKanji2Koe開発ライセンス
    • AqKanji2Koe開発ライセンスキー (未設定でも動作するが制限がかかる)
    • AqKanji2Koe使用ライセンス (使用するなら)
import {AqKanji2Koe} from 'aquestalk';
import * as from 'path';

var frameworkPath = path.join(__dirname, '../vendor/AqKanji2Koe.framework/Versions/A/AqKanji2Koe');
var aqDictPath = path.join(__dirname, '../vendor/aq_dic_large');
var devKey = 'xxx-xxx-xxx-xxx';

var aqKanji2Koe = new AqKanji2Koe(frameworkPath, aqDictPath);
//aqKanji2Koe.setDevKey(devKey);

// test => テ'スト
var kanji = 'test';
var encoded = aqKanji2Koe.convert(kanji);
console.log(encoded);

AquesTalk2

AquesTalk2で"音声記号列"を音声データに変換します。 音声記号列はAqKanji2Koeで作成します。

  • 開発、および利用には次のものが必要です。
    • AquesTalk2ライブラリ
    • 音声定義phontファイル (AquesTalk2ライブラリに同梱)
    • AquesTalk2開発ライセンス
    • AquesTalk2使用ライセンス (使用するなら)
import {AquesTalk2} from 'aquestalk';
import * as path from 'path';

var frameworkPath = path.join(__dirname, '../vendor/AquesTalk2.framework/Versions/A/AquesTalk2');
var phontPath = path.join(__dirname, '../vendor/phont/aq_f1c.phont');

const aquesTalk2 = new AquesTalk2(frameworkPath);
const encoded = "テ'_スト";
const speed = 100;
aquesTalk2.wave(encoded, phontPath, speed).then((buffer) => {
  // TODO
  // use buffer
});

AquesTalk10

AquesTalk10で"音声記号列"を音声データに変換します。 音声記号列はAqKanji2Koeで作成します。

使用ライセンスキー(usrKey)は開発者所有のキーを設定するのではなく、 アプリの利用者に入力、設定させる項目になります。

  • 開発、および利用には次のものが必要です。
    • AquesTalk10ライブラリ
    • AquesTalk10開発ライセンス
    • AquesTalk10開発ライセンスキー (未設定でも動作するが制限がかかる)
    • AquesTalk10使用ライセンス (使用するなら)
import {AquesTalk10} from 'aquestalk';
import * as path from 'path';

var frameworkPath = path.join(__dirname, '../vendor/AquesTalk10.framework/Versions/A/AquesTalk');
var devKey = 'xxx-xxx-xxx-xxx';
var usrKey = 'xxx-xxx-xxx-xxx';

var aquesTalk10 = new AquesTalk10(frameworkPath);
//aquesTalk10.setDevKey(devKey);
//aquesTalk10.setUsrKey(usrKey);

var encoded = "テ'_スト";
var options = {bas: 0, spd: 100, vol: 100, pit: 100, acc: 100, lmd: 100, fsc: 100};

aquesTalk10.wave(encoded, options).then((buffer) => {
  // TODO
  // use buffer
});
音声の定義

AquesTalk10用の音声定義の基本セットは次の通りです。
aq10VoiceList()を呼び出しても取得できます。

import {aq10VoiceList} from '../aquestalk';
console.log(aq10VoiceList());

[
  {id: 'aq10_F1', name: 'F1 女声1(新ゆっくり)', bas: 0, spd: 100, vol: 100, pit: 100, acc: 100, lmd: 100, fsc: 100},
  {id: 'aq10_F2', name: 'F2 女声2', bas: 1, spd: 100, vol: 100, pit: 77, acc: 150, lmd: 100, fsc: 100},
  {id: 'aq10_F3', name: 'F3 女声3', bas: 0, spd: 80, vol: 100, pit: 100, acc: 100, lmd: 61, fsc: 148},
  {id: 'aq10_M1', name: 'M1 男声1', bas: 2, spd: 100, vol: 100, pit: 30, acc: 100, lmd: 100, fsc: 100},
  {id: 'aq10_M2', name: 'M2 男声2', bas: 2, spd: 105, vol: 100, pit: 45, acc: 130, lmd: 120, fsc: 100},
  {id: 'aq10_R1', name: 'R1 ロボット1', bas: 2, spd: 100, vol: 100, pit: 30, acc: 20, lmd: 190, fsc: 100},
  {id: 'aq10_R2', name: 'R2 ロボット2', bas: 1, spd: 70, vol: 100, pit: 50, acc: 50, lmd: 50, fsc: 180},
]

AqUsrDic

ユーザー辞書を操作します。
作成したユーザー辞書はAqKanji2Koeで利用できます。

  • 開発、および利用には次のものが必要です。
    • AqUsrDicライブラリ (AqKanji2Koeライブラリに同梱)
    • AquesTalkユーザー辞書ファイル (AqKanji2Koeライブラリに同梱)
    • AqKanji2Koe開発ライセンス
    • AqKanji2Koe使用ライセンス (使用するなら)

generateUserDict

CSVファイルからユーザー辞書ファイルを生成します。

import {AqUsrDic} from 'aquestalk';
var path = require('path');

var frameworkPath = path.join(__dirname, '../vendor/AqUsrDic.framework/Versions/A/AqUsrDic');
var csvTemplate = path.join(__dirname, '../vendor/aq_dic_large/aq_user.csv');
var resultDir = path.join(__dirname, '../vendor/aq_dic_large');

// generateUserDict
var aqUsrDic = new AqUsrDic(frameworkPath);
var r = aqUsrDic.generateUserDict(csvTemplate, `${resultDir}/aq_user.dic`);

generateCSV

ユーザー辞書ファイルからCSVファイルを生成します。

import {AqUsrDic} from 'aquestalk';
var path = require('path');

var frameworkPath = path.join(__dirname, '../vendor/AqUsrDic.framework/Versions/A/AqUsrDic');
var usrDictTemplate = path.join(__dirname, '../vendor/aq_dic_large/aq_user.dic');
var resultDir = path.join(__dirname, '../vendor/aq_dic_large');

// generateCSV
var aqUsrDic = new AqUsrDic(frameworkPath);
var r = aqUsrDic.generateCSV(usrDictTemplate, `${resultDir}/aq_user.csv`);

validateInput

ユーザー辞書の定義が正しいか、入力チェックします。

import {AqUsrDic} from '../aquestalk';
var path = require('path');
import * as fs from 'fs';

var frameworkPath = path.join(__dirname, '../vendor/AqUsrDic.framework/Versions/A/AqUsrDic');

// validateInput
var aqUsrDic = new AqUsrDic(frameworkPath);
var surface = '大江戸線';
var yomi = 'オーエドセン';
var posCode = 5;
var r = aqUsrDic.validateInput(surface, yomi, posCode);
posCode

AqUsrDicライブラリで使用するposCodeの定義は次の通りです。
posCodeList()を呼び出しても取得できます。

import {posCodeList} from '../aquestalk';
console.log(posCodeList());

[ { posCode: 0, kind: '名詞' },
  { posCode: 1, kind: '名詞(サ変)' },
  { posCode: 2, kind: '人名' },
  { posCode: 3, kind: '人名(姓)' },
  { posCode: 4, kind: '人名(名)' },
  { posCode: 5, kind: '固有名詞' },
  { posCode: 6, kind: '固有名詞(組織)' },
  { posCode: 7, kind: '固有名詞(地域)' },
  { posCode: 8, kind: '固有名詞(国)' },
  { posCode: 9, kind: '代名詞' },
  { posCode: 10, kind: '代名詞(縮約)' },
  { posCode: 11, kind: '名詞(副詞可能)' },
  { posCode: 12, kind: '名詞(接続詞的)' },
  { posCode: 13, kind: '名詞(形容動詞語幹)' },
  { posCode: 14, kind: '名詞(ナイ形容詞語幹)' },
  { posCode: 15, kind: '形容詞' },
  { posCode: 16, kind: '副詞' },
  { posCode: 17, kind: '副詞(助詞類接続)' },
  { posCode: 18, kind: '接頭詞(名詞接続)' },
  { posCode: 19, kind: '接頭詞(動詞接続)' },
  { posCode: 20, kind: '接頭詞(数接続)' },
  { posCode: 21, kind: '接頭詞(形容詞接続)' },
  { posCode: 22, kind: '接続詞' },
  { posCode: 23, kind: '連体詞' },
  { posCode: 24, kind: '記号' },
  { posCode: 25, kind: '記号(アルファベット)' },
  { posCode: 26, kind: '感動詞' },
  { posCode: 27, kind: '間投詞' } ]