質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Objective-C

Objective-Cはオブジェクト指向型のプログラミング言語のひとつです。C言語をベースにSmalltalkが取り入れられています。

Cocoa

CocoaはMac OS X用のアプリケーションを構築する為の主要なフレームワークのひとつです。

MacOS(OSX)

MacOSとは、Appleの開発していたGUI(グラフィカルユーザーインターフェース)を採用したオペレーションシステム(OS)です。Macintoshと共に、市場に出てGUIの普及に大きく貢献しました。

Swift

Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

Q&A

解決済

1回答

2166閲覧

MacOSの音声入力機能をCLIアプリから利用する方法について

tuu_yaa

総合スコア13

Objective-C

Objective-Cはオブジェクト指向型のプログラミング言語のひとつです。C言語をベースにSmalltalkが取り入れられています。

Cocoa

CocoaはMac OS X用のアプリケーションを構築する為の主要なフレームワークのひとつです。

MacOS(OSX)

MacOSとは、Appleの開発していたGUI(グラフィカルユーザーインターフェース)を採用したオペレーションシステム(OS)です。Macintoshと共に、市場に出てGUIの普及に大きく貢献しました。

Swift

Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

0グッド

0クリップ

投稿2016/12/20 15:46

編集2016/12/20 15:57

###前提・実現したいこと
音声認識で得た日本語の入力結果に対して様々な処理を施すプログラムを、CLI上でPython言語を用い、MacOSを対象動作環境として書いています。
音声認識モジュールには様々な選択肢がありますが、フリーであるものの認識精度に乏しい、あるいはWebAPIを通すために必ずネット接続が要求されるなどの制約があります。
そこでいま、MacOS 10.9 (Mavericks) より搭載されている拡張音声入力(Enhanced Dictation)機能に注目しています。音声入力機能自体は10.8 (Mountain Lion) からの実装ですが、10.9以降のそれはオフラインで使用することができます。また認識精度も十分満足できるものです。

###課題

本質問の主旨は、(拡張)音声入力機能を「音声入力の結果のみに基づいて入力を終了する」形でCLIアプリから使用することは可能か、もし可能であればどのような手法で出来るか、というものになります。要件としては、

  • MacOSの音声入力機能(出来れば,「拡張音声入力」)を使用してディクテーションを行う。
  • Pythonプログラムによる呼び出し及び出力の受取りが可能である。(標準入出力でsubprocess.Popensubprocess.PIPEを利用できればよいです)
  • 何らかの命令音声あるいは無音区間の入力によりディクテーションを終了する。(キーボードによる操作を経ない)

このようなプログラムの実装を準備しています(言語はSwift又はObjective-Cを予定)。その実装のためには、Dictationに関係するAPIを発見し、それを利用できればと思っているのですが、未だ具体的なものが見つかりません。情報やヒントをおもちの方に、何卒ご提供頂ければ幸いです。

###これまでに調査したこと

  • dictation機能はInput Methodの一つとして、DictationIM.appという独立したアプリケーションの形で実装されている(と思われる)。デーモン動作しているプロセスは、/System/Library/Input Methods/DictationIM.app/Contents/MacOS/DictationIM
  • Apple Developerdictation及びspeech inputというクエリで検索を行ったが、macOSのCocoa APIに直接関連した記事がヒットしない。OS X Developer Release Notes: Cocoa Application Framework (10.11 and Earlier)という文書にNSTextAlternativesに関する説明があったが、「厳密にはdictationに結びつけられていない」旨の記載がある

以上、どのような情報でもご教示頂けますと幸いです。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

このソースをmacOSのコマンドアプリにすればいいんじゃないでしょうか。

macOS10.10以降で利用可能なNSSpeechRecognizerを利用しています。

https://gist.github.com/bellbind/xxx

投稿2016/12/21 13:50

pebble8888

総合スコア390

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

tuu_yaa

2016/12/22 05:05

ありがとうございます。 Swift 3に修正して、動作させてみました。 このプログラムでは、"Hello", "こんにちは", "Bonjour", "你好" をコマンドとして登録して それらの語彙のみを認識対象として受け付けています。 ディクテーション機能までは起動していないことを動作させてみて確認しました。 ディクテーションに関するクラス等APIがまだ見つからないので、もしかすると 純正の音声入力機能をFnキー2回連打などで起動させて、入力発話の終わりに 何らかのコマンドを入力して入力を終了させる方法になるのかもしれません。
pebble8888

2016/12/22 12:54

文字の書き起こしAPIはmacOSでは公開されていないようです。
tuu_yaa

2016/12/22 15:30

そのようですね・・。結局、精度やネット経由には妥協して他の手法を使うほうが良いですね。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問