rnishino

IT翻訳者Blog

翻訳、英語、ローカリゼーション、インターナショナリゼーションなどについて書いています。

アプリ/IT

31 3月

ビデオ会議の自動文字起こしをAWSで試す

Zoomなどでビデオ会議をしたら、ある程度の精度で構わないので、自動で文字起こしをしたいことがある。
日本語の自動文字起こし専用サービスもいくつかあるようだが、今回はすでにアカウントを持っているAWSのAmazon Transcribeを試してみた。

詳しい使い方はAWSの説明にあるが、手作業でのステップを簡単に説明すると次のようになる。

  1. AWSのストレージサービスである「S3」にオーディオまたはビデオのファイルをアップロードしておく(対応ファイル形式は、MP3、MP4、WAV、FLAC、AMR、OGG、WebMのようだ)

  2. Transcribeでジョブを作成する。ここでS3上のファイルを指定

  3. 実行し、しばらく待つとジョブが完了する

  4. 文字起こしファイルをダウンロードする


設定で「Speaker identification」(話者特定)をしておくと、自動で話者を認識して分割して書いてくれるので便利だ。
なお、料金は30分の動画で「0.72ドル」(約80円)とのことである。



このようにとても簡単なのであるが、困った点が1つあった。
最後にダウンロードするファイルがJSON形式なのである。JSON自体はテキストファイルなのでどのようなエディターでも開ける。しかし話者特定すると、どこからどこまでを誰が話したといったメタ情報が付加されるため、単純なテキスト構造にはならないのである。



もちろん変換プログラムを自作すればよいが、時間がかかりそうだ……と思っていたところ、やはり作ってくれていた人がいた! ありがたい。

 aws-transcribe-transcript
 https://github.com/trhr/aws-transcribe-transcript

ただしPythonなので、パソコンにPythonがインストールされており、コマンドで操作する必要がある。
まず上記Githubサイトからtranscript.pyをダウンロードし、ローカルのフォルダーにJSONファイルと一緒に置く。そして「python transcript.py asrOutput.json」のように(Macならターミナルから)実行すれば、整形されたテキストファイルが出力される。次のような感じである。



話者は2人(spk_0とspk_1)で、きちんと分割して表示されている。時間(「0:38:29」など)も表示されているので、ビデオを見返す際にも便利だ。

ちなみにブラウザー上で変換できるサービスもあるようだ。こちらはSRTというファイル形式で出力されるが、中身はテキストなのでJSONと同様にエディターで開ける。
ただ、自分のファイル(40分程度の文字起こし)で試したらブラウザーがクラッシュしてしまったので、使い心地は分からなかった。あまり大きなファイルは変換できないのかもしれない。



音声認識自体の精度にまだ課題はあるだろうが、目で見て手で書き起こす手間を考えたら、労力は大幅にカットできそうだ。
24 9月

プログラミング必須英単語600+アプリを公開

自社で公開している「プログラミング必須英単語600+」の学習用アプリを公開しました。

ダウンロードなどはこちら:
https://progeigo.org/learning/600-plus-app/





ところで、このアプリは「ノーコード」のサービスであるGlideで制作しました。トップページには「5分でGoogleシートからアプリを作成」などと書いてあります。

Glide


そこで以下のような英単語情報をGoogleシートに入れて作成してみました。

Glide用スプレッドシートデータ

驚いたことに、本当に一瞬で大枠のアプリができ上がりました。ただし細かい設定をしたり文言を追加したりするので、公開できるレベルにするにはもっと時間はかかります。しかしアプリのプログラミングを習得する時間を考えたら、わずかな時間です。

Glideは、このようにGoogleシートに入るようなデータをうまくユーザーに見せるというアプリには向いています。一方であまり複雑な処理はできないので、どのようなアプリも作れるわけではありません。
また、Google Playなどからダウンロードするネイティブ・アプリではなく、ウェブに近いPWA(プログレッシブ・ウェブ・アプリ)です。



最近、Glide以外にもノーコードやローコードのサービスをいくつか使っています。ノーコードには「非プログラマー向け」という印象がありますが、とても便利な面もあります。
それはプログラミングをする上で煩雑な約束事を覚えておく必要がないという点です。たとえばJSONの書き方は、普段接している人でないと、細かい部分まで覚えていられません。そういった部分の調査する必要がない分、ビジネス・レベルのロジックなどに集中できます。
そのため、ノーコードやローコードはプログラマーにとってもメリットが大きいと感じています。
6 5月

Wordpressプラグイン翻訳で日本語ロケール設定の注意点

自分がはまってしまって時間を取られたので、技術的なメモ書き。

Wordpressはプラグインを追加することで、用途に応じたウェブ・アプリケーションを簡単に用意できる。
多言語化機能も整っていて、きちんと国際化(I18N)対応しているプラグインであれば、POTファイル(.pot)から翻訳するだけで、すぐに日本語などで表示できる。

たとえば「AWPCP」(Another Wordpress Classified Plugin)というプラグインでは、/wp-content/plugins/another-wordpress-classifieds-plugin/languagesフォルダー以下にPOTファイルがある。

POTファイル


このPOTファイルを「PoEdit」のような専用翻訳支援ツールで開く。POTのTはテンプレートのことなので、テンプレートからまず日本語用にPOファイルを生成する。続いて、下記の「全般設定」のように翻訳を入力する。

PoEdit


これを保存し、同時に機械読み込み用のMOファイルを生成する。この際、ロケール名を付けなければならないのだが、私は最初の写真にある他のファイルのロケール名(de_DE、en_USなど)に合わせ、「ja_JP」とした。つまり「another-wordpress-classifieds-plugin-ja_JP.mo」である。

こうしたら、Wordpress本体の「サイトの言語」を日本語に再設定すれば翻訳が表示される。実に簡単である……

サイトの言語設定


と思っていたが、翻訳が表示されない。
そこでプラグインを無効化→有効化したり、再インストールしたりしてみたが、翻訳は表示されないまま。

しばらく悩んでいたが、どうもWordpress「サイトの言語」の「日本語」は内部的なロケールとしては「ja_JP」ではなく「ja」であると気づいた。
そこでファイル名も「another-wordpress-classifieds-plugin-ja.mo」と変えると、無事表示された。

AWPCP日本語

ほかのロケールが「de_DE」、「en_US」、「es_ES」、「fr_FR」といった表記だったので、当然「ja_JP」になるはずという思い込みが原因だった。

Wordpressの「日本語」は、ロケールとしては「ja」であり、ja_JPは(自環境の選択肢になかったが)「日本語(日本)」だと思われる。
14 4月

月額基本料金なしで仕事用の電話番号を取得

仕事用として外部公開する電話番号が必要になりました。今は携帯電話しか持っておらず、プライベートでも使うこの番号は公開できません。そもそも仕事柄電話をすることもほとんどないので、携帯電話(あるいはSIM)をもう一台契約する気にもなれません。

どうにか安価に電話番号をもう1つ持てないだろうかと悩んでいたところ、「IP電話アプリ」という選択肢を思い出しました。これはスマートフォン上にアプリをインストールすることで、携帯電話端末自体の「090…」といった番号の他に、「050…」で始まる番号を追加できるサービスのことです。

以前からNTTコミュニケーションズが提供している「050 plus」は知っていたのですが、月に基本料として300円ほどかかります。安いことは安いです。しかしほとんど通話はしないので、維持費はもっと安ければありがたいところです。

調べていると、楽天コミュニケーションズが提供している「IP-Phone SMART」というサービスを見つけました。



このIP-Phone SMARTは月額基本料は無料。さらに留守番電話サービスも無料。電話番号を外部に出すと面倒なセールス電話などがかかってくる可能性もあるので、まずは留守番電話で受けたいところです。
そこでIP-Phone SMARTでアカウントを作成し、050で始まる番号を取得しました(残念ながら050 plusと違って番号を選べない)。

マイページにログインすると下の写真のように留守番電話を設定できます。ここでは、
 ・着信したら即座(呼び出し音なし)に留守番電話に切り換え
 ・着信があったことを登録したメールアドレスに通知し、さらに音声録音ファイルも添付で送る
という設定にしました。



試しに取得した050番号に電話し、メッセージを残してみました。その後マイページを開いて留守番電話の履歴を見ると、こんな具合で残っています。「発信元電話番号」の灰色部分は私の携帯電話番号です。



録音時間が11秒ですが、この時間でファイルサイズは211KBでした。添付ファイルで転送されてきても問題ないサイズです。
録音件数は10件までなので、聞いたファイルは「削除」のボタンから消していくことになります。最初の画像に「メール送信後に録音データ削除」というオプションがあるので、これをオンにしておけば自動で消えていくようです。

そもそもこのサービスを使うには「SMARTalk」というスマートフォン用アプリ(AndroidとiPhone対応)をインストールします。初期設定では050にかかって来ると、スマートフォンでも呼び出し音が鳴ります。
私の場合、とりあえず留守番電話で受けてから対応する(かけ直すなど)つもりなので、呼び出し音がなると困ります。アプリの設定を見ると「発信専用で利用する」というオプションがありました。



これを設定しておけば、発信音が鳴ることはないでしょう(まだ試してない)。留守番電話に録音があった時点で初めて、メールで通知が来ます。

私のようにそもそも電話はほとんど使わない(嫌いでもある)が、電話番号を外部に出す必要がある場合、IP-Phone SMARTは安価かつ便利に使えるのではないでしょうか。
8 7月

MOOC「Entrepreneurship 101: Who is your customer?」視聴

MOOCプロバイダーであるedXに「Entrepreneurship 101: Who is your customer?」というコースがあったので視聴してみました(制作はMIT)。

アプリや製品を開発するスタートアップを念頭に置いた講義です。とにかく顧客やエンドユーザーに注目して製品企画を立てるという内容で、シンプルで分かりやすい方法だと感じました。
英語もやや早口な人が出てきますが、字幕でキーワードを追っていけば、まあ分からないレベルではないのではと思います。

講義の概要は以下の通りです:

・Step 1: Market Segmentation
特定の同質な顧客層に集中し、その他の層は無視する。とにかく集中が重要(Focus, focus, focus)。

・Step 2: Beachhead Market
最初に攻略し、また次への足がかりとなるマーケットのこと。独占できるような狭いマーケットを1つだけ選び、他を捨てて集中することが重要。

・Step 3: End User Profile
エンドユーザーを狭く定義した下位セット(類似する特徴やニーズ、口コミ関係を持つ)に関する記述を行う。

・Step 4: Total Addressable Market(TAM)
特定のマーケットでシェア100%を達成した場合の年間収益のこと。「ターゲットとなるエンドユーザー数 × 1人あたりの平均収益(米ドル)」で計算。TAMが2000万〜1億ドルを推奨。10億ドル以上だと大きすぎ、500万ドル以下だと小さすぎる。

・Step 5: Persona
エンドユーザー・プロファイルを代表するような具体的な1人の人物のこと。顧客が誰かを思い出すのに使う。ペルソナを使うとチームで意識統一が図れる。


以上です。

著書/訳書
血と汗とピクセル
『血と汗とピクセル』


アプリ翻訳実践入門
『アプリ翻訳実践入門』


ソフトウェアグローバリゼーション入門
インプレス刊
『ソフトウェアグローバリゼーション入門』

達人出版会刊
『ソフトウェア・グローバリゼーション入門』


英語語源が魔術に変わる世界では
『英語語源が魔術に変わる世界では』


現場で困らない! ITエンジニアのための英語リーディング
『IT英語リーディング』


アプリケーションをつくる英語
紙版
『アプリケーションをつくる英語』

電子版
『アプリケーションをつくる英語』
第4回ブクログ大賞受賞】